mybatis CRUD
数据库
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;
-
namespace
namespace中的包名要和Dao/mapper接口的包名一致
-
select
查询语句
- id就是对应的namespace中的方法名
- resultType:sql语句执行的返回类型
- parameterType:参数类型
编写接口
User getUserById(int id);
编写对应的mapper的sql语句
<select id="getUserById" resultType="com.yu.pojo.User" parameterType="int"> select * from mybatis.user where id = #{id} </select>
测试
@Test public void getUserById(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); User user = mapper.getUserById(1); System.out.println(user); sqlSession.close(); }
-
insert
编写接口
int addUser(User user);
编写mapper中的sql语句
<insert id="addUser" parameterType="com.yu.pojo.User" > insert into mybatis.user(id, name, pwd) value (#{id},#{name},#{pwd}); </insert>
测试
@Test public void addUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.addUser(new User(4, "李四", "123456")); //提交事务 sqlSession.commit(); sqlSession.close(); }
-
update
编写接口
int updateUser(User user);
编写mapper中的sql语句
<update id="updateUser" parameterType="com.yu.pojo.User"> update mybatis.user set name =#{name},pwd=#{pwd} where id=#{id}; </update>
测试
@Test public void updateUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.updateUser(new User(4,"李四","666666")); sqlSession.commit(); sqlSession.close(); }
-
delete
编写接口
int deleteUser(int id);
编写mapper中的sql语句
<delete id="deleteUser" parameterType="int"> delete from mybatis.user where id = #{id}; </delete>
测试
@Test public void deleteUser(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); mapper.deleteUser(4); sqlSession.commit(); sqlSession.close(); }
注意
增删改需要提交事务
map
假设实体类或者数据库中的表,字段或者参数过多 应该考虑使用map
//map
int addUser2(Map<String,Object> map);
<insert id="addUser2" parameterType="map" >
insert into mybatis.user(id, name, pwd) value (#{userId},#{userName},#{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("userName","王五");
map.put("passWord","222222");
mapper.addUser2(map);
sqlSession.commit();
sqlSession.close();
}
map传递参数直接在sql中取出key [parameterType=“map”]
对象传递参数直接在sql去对象的属性 [parameterType=“Object”]
只有一个基本类型参数的情况下可以直接在sql中取到 可以不写或者写那个参数类型
多个参数用map或者注解