3、 CRUD
3.1 namespace
namespace中的包名和mapper/Dao接口的报名要一致
3.2 select
选择、查询语句
- id就是对应的namespace中的方法名
- resultType:sql语句执行的返回值
- parameterType: 参数类型
3.3 Insert(一定要提交事务!)
- 编写接口:UserDao.java 中
//增加一个用户
int addUser(User user);
- 编写Mapper: UserMapper.xml中配置
<!-- 对象中的属性可以直接取出来-->
<insert id="addUser" parameterType="com.ex.pojo.User" >
insert into mybatis.user (id,name,pwd) value (#{id},#{name},#{pwd});
</insert>
- 测试
有一个注意点:一定要提交事务!否则,虽然执行成功,但在数据库中没有修改!
public void addUser(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.addUser(new User(3, "哈哈", "12345"));
//提交事务
sqlSession.commit();
sqlSession.close();
}
3.4 Update(一定要提交事务!)
<update id="update" parameterType="com.ex.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
</update>
3.5 Delete(一定要提交事务!)
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id=#{id}
</delete>
3.6 分析错误
-
UserMapper.xml 中这里的namespace一定是用 ‘.’
-
mybatis-config.xml 中Resources中绑定路径用‘/’
- mybatis-config.xml 中程序配置文件一定要符合规范
3.7 万能Map
//万能的Map
int addUser2(Map<String,Object> map);
<insert id="addUser2" parameterType="map">
insert into mybatis.user (id,name,pwd) value (#{aa},#{bb},#{cc})
</insert>
public void testAdd2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
Map<String, Object> map = new HashMap<String,Object>();
map.put("aa",3);
map.put("bb","哈哈");
map.put("cc","12345");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
-
Map传递参数,直接在sql中取出key即可
parameterType="map"
-
对象传递参数,直接在sql中取对象的属性即可
parameterType="Object"
-
只有一个基本类型参数的情况下,可以直接在sql中取到
parameterType="int"
参数还可以不写 -
多个参数用Map,或者注解
3.8 模糊查询
List<User> getUserLike(String value);
<select id="getUserLike" resultType="com.ex.pojo.User">
select * from mybatis.user where name like #{value}
</select>
public void testLike(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
// 这里要用通配符
List<User> users = mapper.getUserLike("%周%");
for (User user : users) {
System.out.println(user);
}
sqlSession.close();
}
-
Java代码执行时写上通配符
public void testLike(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserDao mapper = sqlSession.getMapper(UserDao.class); // 这里要用通配符 List<User> users = mapper.getUserLike("%周%"); for (User user : users) { System.out.println(user); } sqlSession.close(); }
-
在sql中拼接
select * from mybatis.user where name like "%"#{value}"%"