CRUD
1.namespace
namespace中的包名要和接口名一致
2.select
选择,查询语句
- id:就是对应的namespace中的方法
- resultType:Sql语句执行的返回值;
- parameterType:参数类型
-
持久类里面编写接口
//获取全部用户 List<User> getUserList();
-
编写对应的mapper映射文件
<select id="getUserList" resultType="com.zhou.pojo.User"> select * from mybatis.user </select> <select id="getUserById" parameterType="int" resultType="com.zhou.pojo.User"> select * from mybatis.user where id = #{id} </select>
-
测试
@Test
public void test(){
//从工具类utils中取到SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//执行sql- 方法一
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserList();
/*//方法二
List<User> userList = sqlSession.selectList("com.zhou.dao.UserDao.getUserList");*/
for (User user:userList){
System.out.println(user);
}
//关闭Sqlsession
sqlSession.close();
}
3.Insert
对应sql语句
<insert id="addUser" parameterType="com.zhou.pojo.User">
insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd});
</insert>
4.Update
<update id="updateUser" parameterType="com.zhou.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id};
</update>
5.Delete
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id};
</delete>
注意事项
-
增删改需要提交事务
Sqlsession.commit();
6.万能的Map方法
假设,我们的实体类,或者数据库中的表,字段或者参数过多,可以烤炉使用Map
@Test
public void addUser2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
HashMap<String,Object> map = new HashMap<String, Object>();
map.put("userid",7);
map.put("username","zhoujx");
map.put("password","10086");
mapper.addUser2(map);
//提交事务
sqlSession.commit();
sqlSession.close();
}
Map传递参数,直接在sql中取出key即可!
对象传递参数,直接在sql中对象的属性即可!
只有一个基本类型参数的情况下,可以直接在sql中取到!
多个参数用Map,或者注解!
7.拓展题
模糊查询
-
java代码执行的时候,传递通配符%查询内容%
List<User> userList = mapper.getUserLike("%周%");
-
在sql拼接中使用通配符!
<select id="getUserLike" resultType="com.zhou.pojo.User"> select * from mybatis.user where name like "%"#{value}"%"; </select>