MyBatis(22)- mybatis 注解开发

1 MyBatis 注解开发

  • @Insert:实现新增
  • @Update:实现更新
  • @Delete:实现删除
  • @Select:实现查询
  • @Result:实现结果集封装
  • @Results:可以与@Result一起使用,封装多个结果集
  • @ResultMap:实现引用
  • @Results定义的封装
  • @One:实现一对一结果集封装
  • @Many:实现一对多结果集封装
  • @SelectProvider:实现动态SQL映射
  • @CacheNamespace:实现注解二级缓存的使用

主配置文件不能省略 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">
<!-- mybatis 的主配置文件-->
<configuration>

    <properties resource="jdbc.properties"></properties>

    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>


    <!--配置别名,配置 domain 类中的别名
        配置了别名后,就不在区分大小写
    -->
    <typeAliases>
        <!--该包下所有的实体类都被注册别名,类名就是别名,不在区分大小写-->
        <package name="com.tzb.domain"/>
    </typeAliases>

    <!--配置环境-->
    <environments default="mysql">
        <environment id="mysql">
            <!--配置事务类型-->
            <transactionManager type="JDBC"></transactionManager>

            <!--配置数据源(连接池)-->
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--指定dao接口所在的包,不需要再写 mapper 以及resource或者 class-->
    <mappers>
        <package name="com.tzb.dao"/>
    </mappers>

</configuration>

1.1 DAO

public interface IUserDao {

    @Select(value = "select * from user")
    List<User> findAll();

    @Insert("insert into user(username,address,sex,birthday) " +
            "values (#{username},#{address},#{sex},#{birthday})")
    void saveUser(User user);

}

  • 单元测试
public class MyBatisTest {

    private InputStream in;
    private SqlSessionFactory factory;
    private SqlSession sqlSession;
    private IUserDao userDao;

    @Before
    public void init() throws IOException {
        // 1.读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建 SqlSessionFactory 工厂
        factory = new SqlSessionFactoryBuilder().build(in);
        // 3.使用工厂生产 SqlSession 对象
        sqlSession = factory.openSession();
        // 4.使用 SqlSession 创建DAO接口的代理对象
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After
    public void destory() throws IOException {
        // 提交事务
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }

    @Test
    public void testFindAll(){
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }

    @Test
    public void testSave(){
        User user = new User();
        user.setUsername("宫本武藏");
        user.setAddress("日本");
        user.setBirthday(new Date());
        user.setSex("男");
        userDao.saveUser(user);
    }
    
}

2 注解建立实体类属性和数据库列表中列的对应关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章