Mybatis 的 SqlMapConfig.xml 配置文件 和 MybatisTest.java

一、properties 标签

原先SqlMapConfig.xml 配置的properties 的方式
在这里插入图片描述

在使用 properties 标签配置时,我们可以采用两种方式指定属性配置
(1)直接在 配置文件中添加 配置信息
在这里插入图片描述
(2)添加外部的properties文件,也就是单独的配置文件放到resources下,然后使用 SqlMapConfig.xml 调用
在这里插入图片描述
此时的配置文件就可以直接引用这个单独 properties 文件,但是要注意 property 中 value 的值与你设置的 properties 中的对应关系。
在这里插入图片描述

resource 属性
	* 用于指定 properties 配置文件的位置,要求配置文件必须在类路径下
	* resource="jdbcConfig.properties"
url 属性
	* URL: Uniform Resource Locator 统一资源定位符
	* http://localhost:8080/mystroe/CategoryServlet URL
	  协议    主机       端口      URI -----------------》 协议://主机:端口/URI
	  
URI: Uniform Resource Identifier 统一资源标识符
	* /mystroe/CategoryServlet
	* 它是可以在 web 应用中唯一定位一个资源的路径

所以也可以换成使用 url 属性来指定 properties 配置文件的位置
在这里插入图片描述

二、typeALiases 类型别名

主要配合xml配置文件使用,当使用注解方式时,好像没啥用

在 SqlMapConfig.xml 中通过 typeAlias 属性单独设置别名,可以在 UserDao.xml 中直接使用别名,方便操作
在这里插入图片描述
如果每个别名都单独设置,比较麻烦,也可以使用 package 属性直接扫描这个包下的类,别名即为类名
这个package用于指定实体类
在这里插入图片描述

三、mappers 映射器

这里可以使用 package指定dao 接口所在的包,这样就不用再写 Mapper,resource或者class了,这里对 映射配置文件 UserDao.xml 与原先的相同,都需要和 dao 接口包结构相同

在这里插入图片描述

四、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 -->
    <properties resource="jdbcConfig.properties"></properties>
    <typeAliases>
        <package name="mybatis.domain"/>
    </typeAliases>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置mysql的环境-->
        <environment id="mysql">
            <!-- 配置事务的类型-->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <!--package标签用于指定dao接口所在的包,指定之后就不要再写mapper以及resource或者class-->
        <package name="mybatis.dao"/>
    </mappers>
</configuration>

五、设置延迟加载策略

Mybatis 延迟加载策略

<settings>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
</settings>

在这里插入图片描述

六、jdbcConfig.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root

七、Mybatis.java

/**
 * 测试 mybatis 的环境
 */
public class MybatisTest {
    private InputStream in;
    private SqlSession sqlSession;
    private UserDao userDao;

    @Before//用于在测试方法执行之前执行
    public void init() throws IOException {
        //1.读取配置文件
        in = Resources.getResourceAsStream("SqlMapConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        //3.使用工厂生产SqlSession对象
        sqlSession = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        userDao = sqlSession.getMapper(UserDao.class);
    }

    @After//用于在测试方法执行之后执行
    public void destroy() throws IOException {
        //实现增删改查时需要控制事务的提交
        sqlSession.commit();
        //6.释放资源
        sqlSession.close();
        in.close();
    }

    /**
     * 测试查询所有
     */
    @Test
    public void testFindAll() {
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for (User user :
                users) {
            System.out.println(user);
        }
    }

    /**
     * 测试保存操作
     */
    @Test
    public void testSave() {
        User user = new User();
        user.setUsername("Save");
        user.setAddress("Java");
        user.setSex("男");
        user.setBirthday(new Date());
        //5.执行保存方法
        userDao.saveUser(user);
        System.out.println("保存之后的user:" + user);
    }

    /**
     * 根据id查询
     */
    @Test
    public void testFindOne() {
        //5.使用代理对象执行方法
        User user = userDao.findById(48);
        System.out.println(user);
    }

    /**
     * 用户更新
     */
    @Test
    public void testUpdate() {
        User user = new User();
        user.setId(49);
        user.setUsername("Update");
        user.setAddress("Java");
        user.setSex("男");
        user.setBirthday(new Date());
        //5.使用代理对象执行方法
        userDao.updateUser(user);
    }

    /**
     * 删除操作
     */
    @Test
    public void testDelete() {
        //5.使用代理对象执行方法
        userDao.deleteUser(46);
    }

    /**
     * 模糊查询
     */
    @Test
    public void testFindByName() {
        //5.使用代理对象执行方法
        List<User> users = userDao.findByName("%王%");
        for (User user : users) {
            System.out.println(user);
        }
    }

    /**
     * 查询总记录条数
     */
    @Test
    public void testFindTotal() {
        //5.使用代理对象执行方法
        int count = userDao.findTotal();
        System.out.println(count);
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值