提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
本章介绍Mybatis中最简单的CRUD操作
UserMapper.xml中属性的含义
- id : 就是对应的namespace中的方法名;
- resultType:Sql语句执行的返回值!
- parameterType : 参数类型
在数据库中创建User表
CREATE TABLE `user`(
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(30) DEFAULT NULL,
`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
简单插入数据
insert into `user`(`id`,`name`,`pwd`) values
(1,'狂神','123456'),
(2,'张三','123123'),
(3,'李四','111111');
我们需要先进行准备工作,即
- 配置Maven
- 编写工具类
- mybatis-config.xml配置文件
- 编写Dao/Mapper
- 编写UserMapper.xml配置文件绑定一个Mapper
详细请参考文章: https://blog.csdn.net/weixin_71366486/article/details/133163670?spm=1001.2014.3001.5501
一、查询操作
1.在UserDao中编写接口
//查询全部用户 List<User> getUserList();
2.全部查询
在UserMapper.xml中编写如下语句
<!-- 编写sql语句 --> <select id="getUserList" resultType="com.heima.pojo.User"> select * from mybatis.user; </select>
我们就可以在测试类中继续测试,如:
@Test public void getUserList(){ //第一步获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //调用需要的方法 UserDao mapper = sqlSession.getMapper(UserDao.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } //关闭SqlSession sqlSession.close(); }
3 在UserDao中编写接口
//根据id查询用户 List<User> getUserById(int id);
4.通过Id查询
在UserMapper.xml中编写如下语句
<!-- 编写sql语句 --> <select id="getUserById" parameterType="int" resultType="com.heima.pojo.User"> select * from mybatis.user where id = #{id}; </select>
我们就可以在测试类中继续测试,如:
@Test public void getUserById(){ //第一步获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); //调用需要的方法 List<User> user = mapper.getUserById(2); System.out.println(user); //关闭SqlSession sqlSession.close(); }
二、插入操作
在UserDao中编写接口
//增加一个用户 int addUser(User user);
在UserMapper.xml中编写如下语句
<insert id="addUser" parameterType="com.heima.pojo.User"> insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd}); </insert>
我们就可以在测试类中继续测试,如:
@Test public void addUser(){ //第一步获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); //调用需要的方法 int row = mapper.addUser(new User(4, "王五", "666666")); //增删改需要提交事务 if(row > 0){ System.out.println("插入成功..."); } //提交事务 sqlSession.commit(); //关闭SqlSession sqlSession.close(); }
三、修改操作
在UserDao中编写接口
//修改一个用户信息 int updateUser(User user);
在UserMapper.xml中编写如下语句
<update id="updateUser" parameterType="com.heima.pojo.User"> update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}; </update>
我们就可以在测试类中继续测试,如:
@Test public void updateUser(){ //获取SqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); int row = mapper.updateUser(new User(4,"李小龙","666666")); if(row > 0){ System.out.println("修改成功..."); } //提交事务 sqlSession.commit(); //关闭sqlSession连接 sqlSession.close(); }
四、删除操作
在UserDao中编写接口
//根据id删除一个用户 int deleteById(int id);
在UserMapper.xml中编写如下语句
<delete id="deleteById" parameterType="com.heima.pojo.User"> delete from mybatis.user where id=#{id}; </delete>
我们就可以在测试类中继续测试,如:
@Test public void deleteById(){ //获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); int row = mapper.deleteById(4); if(row > 0){ System.out.println("删除成功..."); } //提交事务 sqlSession.commit(); //关闭连接 sqlSession.close(); }
五、万能Map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!
//万能的Map
int addUser2(Map<String,Object> map);
<!--对象中的属性,可以直接取出来 传递map的key-->
<insert id="addUser" parameterType="map">
insert into mybatis.user (id, pwd) values (#{userid},#{passWord});
</insert>
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
Map<String, Object> map = new HashMap<String, Object>();
map.put("userid",5);
map.put("passWord","2222333");
mapper.addUser2(map);
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可! 【parameterType="map"】
对象传递参数,直接在sql中取对象的属性即可!【parameterType="Object"】
只有一个基本类型参数的情况下,可以直接在sql中取到!
多个参数用Map,或者注解!
六、模糊查询
模糊查询怎么写?
-
Java代码执行的时候,传递通配符 % %
List<User> userList = mapper.getUserLike("%李%");
-
在sql拼接中使用通配符!
select * from mybatis.user where name like "%"#{value}"%"
总结
注意点:
- 增删改需要提交事务!
至此我们就可以完成简单的CRUD功能了