目录
一、mybatis注解开发
mybatis的SQL映射文件可以使用xml的方式配置,但不同的用户模块接口都对应一个映射文件,并且在映射文件中书写sql语句很麻烦。所以Mybatis为用户提供了快速的开发方式,基于注解(Annnotation)的配置方式。
@Insert:保存
Value:sql语句(和xml的配置方式一模一样)
@Update:更新
Value:sql语句
@Delete: 删除
Value:sql语句
@Select: 查询
Value:sql语句
@Options:可选配置(获取主键)
userGeneratedKeys:开关,值为true表示可以获取主键 相当于select last_insert_id()
keyProperty :对象属性
keyColumn : 列名
1、搭建注解开发的Mybatis环境
将mybatis全局配置文件mybatis-config.xml中的mapper路径改为包扫描或者class路径
说明:因为没有了映射文件,所以我们这里采用加载接口方式,需要告知mybatis哪个接口的方法上的注解需要被执行。
- 配置核心配置文件
<!--引入映射文件-->
<mappers>
<!--基于扫包方式加载mapper接口-->
<package name="hhy/mapper"/>
<!--<mapper>和<package >不能同时存在-->
<!--<mapper resource="hhy/mapper"/>-->
</mappers>
- 定义接口
public interface UserMapper {
@Insert("insert into tb_user values(null,#{userName},#{password},#{name},#{age},#{sex})")
Integer addUser(User user);
}
1、插入
定义接口后,编写测试
//myBatis注解开发@insert
@Test
public void t1() {
final SqlSession session = SessionFactoryUtils.getSession();
final UserMapper mapper = session.getMapper(UserMapper.class);
final User2 user2 = new User2(null,null,"buzz","666","巴斯光年",18,1);
final Integer integer = mapper.addUser(user2);
System.out.println("添加用户 = " + integer);
session.close();
}
2、删除
在根据id删除数据的方法上面编写注解@Delete
@Delete("delete from tb_user where id = #{id}")
Integer deleteUser(@Param("id") Integer id);
//myBatis注解开发@delete
@Test
public void t2() {
final SqlSession session = SessionFactoryUtils.getSession();
final UserMapper mapper = session.getMapper(UserMapper.class);
final Integer integer = mapper.deleteUser(13);
System.out.println("添加用户 = " + integer);
session.commit();
session.close();
}
3、更新
//在根据id修改用户数据方法上面添加注解@Update,然后在其value属性值中编写具体的SQL
@Update("update tb_user set user_name=#{userName},password=#{password},name=#{name},age=#{age},sex=#{sex} where id=#{id}")
Integer updateUser(User2 user2);
@Test
public void t3() {
final SqlSession session = SessionFactoryUtils.getSession();
final UserMapper mapper = session.getMapper(UserMapper.class);
final User2 user2 = new User2(null,14L,"buzzLightYear","666","巴斯光年飞向太空",18,1);
final Integer integer = mapper.updateUser(user2);
System.out.println("integer = " + integer);
session.commit();
session.close();
}
4、查询
若不开启驼峰映射,有些值拿不到。
//查询所有用户
@Select("select * from tb_user")
List<User2> findAll();
//myBatis注解开发@select
@Test
public void t4() {
final SqlSession session = SessionFactoryUtils.getSession();
final UserMapper mapper = session.getMapper(UserMapper.class);
final List<User2> all = mapper.findAll();
System.out.println("all = " + all);
session.commit();
session.close();
}
5、自增主键回填
自增主键回填(了解):使用注解完成数据新增,新增成功后返回数据的主键id值