Tips:请先阅读:
一、MyBatis入门——第一个MyBatis项目搭建文章
https://blog.csdn.net/Gauss7/article/details/115264612
二、MyBatis入门——基本CRUD代码编写
https://blog.csdn.net/Gauss7/article/details/115280533
三、MyBatis入门——配置解析
https://blog.csdn.net/Gauss7/article/details/115309923
四、MyBatis入门——解决属性名和字段名不一致的问题
https://blog.csdn.net/Gauss7/article/details/115325116
五、MyBatis入门——日志
https://blog.csdn.net/Gauss7/article/details/115351129
六、MyBatis入门——分页
https://blog.csdn.net/Gauss7/article/details/115408607
我们在一般实现一个系统的时候,通常是将定义与实现合为一体,不加分离的,我认为最为理想的系统设计规范应是所有的定义与实现分离,尽管这可能对系统中的某些情况有点麻烦。
注解在接口"UserMapper"上实现
@Select("select * from user")
List<User> getUsers();
需要在核心配置文件"mybatis-config.xml"中绑定接口!
<mappers>
<mapper class="com.twy.dao.UserMapper"/>
mappers>
测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
本质:反射机制实现
底层:动态代理!
Tips: 我们可以在工具类创建的时候实现自动提交事务!
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession(true);
}
注意:
我们必须要将接口注册绑定到核心配置文件中!
第一步:编写接口,增加注解
//查询全部信息
@Select("select * from user")
List<User> getUsers();
第二步:测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUsers();
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
第一步:编写接口,增加注解
//方法存在多个参数,所有的参数前面必须加上@Param("id")注解
@Select("select * from user where id = #{id}")
User getUserByID(@Param("id") int id);
第二步:测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User userByID = mapper.getUserByID(1);
System.out.println(userByID);
sqlSession.close();
}
第一步:编写接口,增加注解
@Insert("insert into user(id,name,age,sex,addr) values (#{id},#{name},#{age},#{sex},#{address})")
int addUser(User user);
第二步:测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.addUser(new User(4,"tt",20,"M","广州"));
//若设置自动提交事务,则可以不用sqlSession.commit();
sqlSession.commit();
sqlSession.close();
}
第一步:编写接口,增加注解
@Update("update user set name=#{name},age=#{age},sex=#{sex},addr=#{address} where id=#{id}")
int updateUser(User user);
第二步:测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(4,"twy",20,"M","珠海"));
//若设置自动提交事务,则可以不用sqlSession.commit();
sqlSession.commit();
sqlSession.close();
}
第一步:编写接口,增加注解
//可用注解将id设为uid
@Delete("delete from user where id=#{uid}")
int deleteUser(@Param("uid") int id);
第二步:测试
@Test
public void test(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(4);
//若设置自动提交事务,则可以不用sqlSession.commit();
sqlSession.commit();
sqlSession.close();
}
关于@Param()注解: