14. 使用MyBatis注解配置SQL
1.MyBatis常用注解
-
@Insert:实现新增,代替了
-
@Delete:实现删除,代替了
-
@Update:实现更新,代替了
-
@Select:实现查询,代替了
-
@Result:实现结果集封装,代替了
-
@Results:可以与@Result 一起使用,封装多个结果集,代替了
-
@One:实现一对一结果集封装,代替了
-
@Many:实现一对多结果集封装,代替了
2.项目结构和核心配置
- 使用注解开发摒弃了传统的xml映射文件,而是在接口了直接通过注解将数据映射到数据库中。
- SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 读取配置文件-->
<properties resource="jdbc.properties"/>
<!-- 设置延迟加载策略-->
<!-- <settings>
<!– 所有方法都会延迟加载–>
<setting name="lazyLoadTriggerMethods" value="toString()"/>
<!–开启全局延迟加载功能–>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>-->
<!-- 给实体类起别名-->
<typeAliases>
<package name="com.weihong.domain"/>
</typeAliases>
<!-- 加载数据源-->
<environments default="default_mysql">
<environment id="default_mysql">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="url" value="${jdbc.url}"/>
<property name="driver" value="${jdbc.driver}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--或者指定扫描包含映射关系的接口所在的包也可以-->
<mappers>
<package name="com.weihong.mapper"/>
</mappers>
</configuration>
3.通过注解实现增删改查功能—单表操作
-
创建UserMapper接口
public interface UserMapper { @Select("SELECT * FROM `user`") public List<User> findAll(); @Insert("INSERT INTO `user`(username,birthday,sex,address) VALUES(# {username},#{birthday},#{sex},#{address})") public void save(User user); @Update("UPDATE `user` SET username = #{username},birthday = #{birthday},sex = #{sex},address = #{address} WHERE id = #{id}") public void update(User user); @Delete("DELETE FROM `user` where id = #{id}") public void delete(Integer id); }
-
测试类
/ 查询 @Test public void testFindAll() throws Exception { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List<User> list = userMapper.findAll(); for (User user : list) { System.out.println(user); } } // 添加 @Test public void testSave() throws Exception { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setUsername("于谦"); user.setBirthday(new Date()); user.setSex("男"); user.setAddress("北京德云社"); userMapper.save(user); } // 更新 @Test public void testUpdate() throws Exception { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = new User(); user.setId(49); user.setUsername("郭德纲"); user.setBirthday(new Date()); user.setSex("男"); user.setAddress("北京德云社"); userMapper.update(user); } // 删除 @Test public void testDelete() throws Exception { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); userMapper.delete(49); }