mybatis的crud
1.CRUD
1. namespance
namespace中的包名要和dao/mapper接口的包名一致!
2.select
选择,查询语句:
- id:就是对应的namespace中的方法名;
- resultType:sql语句执行的返回值;
- parameterType:参数类型;
-
编写接口
User getById(int id);
-
编写对应的mapper中的sql语句
<select id="getById" resultType="com.pojo.User" parameterType="int"> select * from mybatis.user where id=#{id}; </select>
-
测试
public void getById(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User byId = mapper.getById(1); System.out.println(byId); sqlSession.close(); }
3.insert
增加语句:
-
接口
int insert(User user);
-
sql语句
<insert id="insert" parameterType="com.pojo.User"> insert into mybatis.user (id,name,pwd) values (#{id},#{name},#{pwd}); </insert>
-
测试
@Test public void insert(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.insert(new User(4,"zhaoliu","159488")); sqlSession.commit(); sqlSession.close(); }
4.update
修改语句:
-
接口
int updataList(User user);
-
sql语句
<update id="updataList" parameterType="com.pojo.User"> update mybatis.user set `name`=#{name},pwd=#{pwd} where id=#{id} ; </update>
-
测试
@Test public void updata(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.updataList(new User(2,"wangwu","123456")); sqlSession.commit(); sqlSession.close(); }
5.delete
删除语句:
-
接口
int deleteUser(int id);
-
sql语句
<!--删除语句 --> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id=#{id}; </delete>
-
测试
@Test public void deleteUser(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(4); sqlSession.commit(); sqlSession.close(); }
注意点
- 增删改需要提交事务
6.万能的map
假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!
-
接口
int insert2(Map<String,Object> map);
-
sql语句
<!--map增加语句 --> <insert id="insert2" parameterType="map"> insert into mybatis.user (id,name,pwd) values (#{userid},#{username},#{password}); </insert>
-
测试
@Test public void insert2(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("userid",4); map.put("username","tianqi"); map.put("password","456789"); mapper.insert2(map); sqlSession.commit(); sqlSession.close(); }
- Map传递参数,直接在sql中取key即可! [parameterType=“map”]
- 对象传递参数,直接在sql中取对象的属性即可![parameterType=“Object”]
- 只有一个基本类型参数的情况下,可以直接在sql中取到!
- 多个参数用Map,或者注解
7.模糊查询
-
java代码执行的时候,传递通配符% %
<!--模糊查询 --> <select id="getUserLike" resultType="com.pojo.User"> select * from mybatis.user where `name` like #{value}; </select>
@Test public void getUserLike(){ SqlSession sqlSession = MybatisUtil.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userLike = mapper.getUserLike("%wu%"); for (User user : userLike) { System.out.println(user); } sqlSession.close(); }
-
在sql拼接中使用通配符!
<select id="getUserLike" resultType="com.pojo.User"> select * from mybatis.user where `name` like "%"#{value}"%"; </select>