1.新建一个mave project
2.在pom.xml下导入jar包坐标,mybatis,mysql驱动,log4j,junit
jar
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.26
commons-logging
commons-logging
1.1.3
junit
junit
4.10
3.把log4j配置导入到main/resource下
4.在java下创建domian实体类,变量与mysql对应
public class User implements Serializable {}
5.在main/resource下创建mybatis的主配置文件:SqlMapConfig.xml,导入config的约束,并且进行配置
6.在java/sise/sn/dao下创建IUserDao接口
/**
* 用户的持久层接口
*/
public interface IUserDao {
/**
* 查询所有用户
* @return
*/
List findAll();
}
7.创建 IUserDao的映射配置文件,在main/resource下创建于IUserDao同级目录的IUserDao.xml文件,导入map约束,并配置
8.编写测试类测试
/**
* 测试mybatis的crud操作
*/
public class MybatisTest {
/**
* 测试查询所有
*/
@Test
public void testFindAll() throws IOException {
//1.读取配置文件,生成字节输入流
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.获取SqlSeesion对象
SqlSession sqlSession = factory.openSession();
//4.获取dao的代理对象
IUserDao userDao = sqlSession.getMapper(IUserDao.class);
//5.执行查询所有方法
List users = userDao.findAll();
for (User user : users) {
System.out.println(user);
}
//6.释放资源
sqlSession.close();
in.close();
}
}
1.dao, IUserDao中添加saveUser方法
/**
* 用户的持久层接口
*/
public interface IUserDao {
/**
* 查询所有用户
* @return
*/
List findAll();
/**
* 保存方法
* @param user
*/
void saveUser(User user);
}
2.在IUserDao.xml映射配置文件中添加
select last_insert_id();
insert into user (username,address,sex,birthday) values (#{username},#{address},#{sex},#{birthday});
3.在测试类中测试,把默认操作提取方法初始化
public class MybatisTest {
private InputStream in;
private SqlSession sqlSession;
private IUserDao userDao;
//定义初始化方法
@Before//用于在测试方法执行之前执行
public void init() throws IOException {
//1.读取配置文件,生成字节输入流
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.获取SqlSessionFactory对象
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
//3.获取SqlSeesion对象
sqlSession = factory.openSession();
//4.获取dao的代理对象
userDao = sqlSession.getMapper(IUserDao.class);
}
//定义释放资源方法
@After//用于在测试方法执行之后执行
public void destory() throws IOException {
//提交事务
sqlSession.commit();
//释放资源
sqlSession.close();
in.close();
}
/**
* 测试保存操作
*/
@Test
public void testSave() throws IOException {
User user = new User();
user.setUsername("6ms");
user.setAddress("北京");
user.setSex("男");
user.setBirthday(new Date());
//5.执行查询所有方法
userDao.saveUser(user);
}
}
.
IUserdao:
/**
* 更新用户
* @param user
*/
void updateUser(User user);
/**
* 根据id删除用户
* @param userId
*/
void deleteUser(Integer userId);
IUserdao.xml:
update user set username=#{username},address=#{address},sex=#{sex},birthday=#{birthday} where id=#{id};
delete from user where id=#{id}
test:
/**
* 测试更新操作
*/
@Test
public void testUpdate(){
User user = new User();
user.setId(49);
user.setUsername("update 6maosong");
user.setAddress("北京");
user.setSex("男");
user.setBirthday(new Date());
//5.执行更新方法
userDao.updateUser(user);
}
/**
* 测试删除操作
*/
@Test
public void testDelete(){
//5.执行删除方法
userDao.deleteUser(42);
}
IUserDao:
/**
* 根据名称模糊查询
* @param username
* @return
*/
List findByName(String username);
IUserDao.xml
test:
/**
* 测试模糊查询
*/
@Test
public void testfindByName(){
//5.执行模糊查询方法
//要提供%
List users = userDao.findByName("%王%");
for (User user : users) {
System.out.println(user);
}
}
1.把jdbcConfig.properties导入resource中
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eesy
jdbc.username=root
jdbc.password=root
2.在SqlMapConfig.xml中修改代码
配置properties和修改DataSource
在SqlMapConfig.xml中
在IUserDao.xml中, resultType="sise.cn.domain.User”可改为resultType=“user”
在SqlMapConfig.xml中配置映射文件的位置