Mybatis学习0 - 配置文件、配合log4j、基于注解使用

0. MyBatis配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AAcNxSYi-1587802859015)(en-resource://database/28664:0)]

连接池type
UNPOOLED:不使用连接池,传统的Java获取数据库连接
POOLED:mybatis内部的数据库连接池,开发、测试常使用
JNDI:mybatis从应用服务器配置好的JNDI数据源获取连接(即外部连接池),生产环境使用
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://www.mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

        <!--可进行外部加载数据库的信息 -->
<!--    <properties resource=""></properties>-->    
       
    <!--别名 - 可简写类全限定名可直接写成 类名即可 -->
    <typeAliases>
        <package name="top.linruchang.domain"/>
    </typeAliases>
    
    <!-- 数据源的配置 --> 
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/graduation_design?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- dao层sql映射文件位置  resource默认在classpath路径下--> 
    <!-- 不可使用 mapper/*Mapper.xml 进行模糊文件名 ,否则报错--> 
    <mappers>
        <mapper resource="mapper/userMapper.xml"/>
    </mappers>
</configuration>

1. 简单实例 - 配合Log4j - 包含配置文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ghhIuY4U-1587802859024)(en-resource://database/28646:1)]


依赖pom.xml

<dependencies>
    <!-- mybatis持久层框架 --> 
    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.6</version>
    </dependency>

    
    <!-- 数据库连接 -->
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    
    <!-- 日志打印 -->
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!-- 单元测试 --> 
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>


  </dependencies>



log4j.proerties - 日志配置

# 全局日志级别、以及日志输出的位置别名(可多个位置)
log4j.rootLogger=DEBUG, console

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p [%c] - %m%n

# 需要日志打印的类 - 必须配置 - 定义哪个包下的类运行时,开始打印日志
# log4j.logger.包全限定名
log4j.logger.top.linruchang.dao=DEBUG

#ibatis logger config - 定义需要打印什么东西
log4j.logger.com.ibatis=WARN
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=WARN
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=WARN
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=WARN
log4j.logger.java.sql.Connection=WARN
log4j.logger.java.sql.Statement=WARN
log4j.logger.java.sql.PreparedStatement=WARN



mybatisConfig.xml - 全局配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://www.mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

        <!--可进行外部加载数据库的信息 -->
<!--    <properties resource=""></properties>-->    
       
    <!--别名 - 可简写类全限定名可直接写成 类名即可 -->
    <typeAliases>
        <package name="top.linruchang.domain"/>
    </typeAliases>
    
    <!-- 数据源的配置 --> 
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/graduation_design?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    
    <!-- dao层sql映射文件位置  resource默认在classpath路径下--> 
    <!-- 不可使用 mapper/*Mapper.xml 进行模糊文件名 ,否则报错--> 
    <mappers>
        <mapper resource="mapper/userMapper.xml"/>
    </mappers>
</configuration>


userMapper.xml - dao层sql语句映射

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="top.linruchang.dao.userDao">

    <select id="findById" resultType="user">
        select * from ums_user where id = #{id}
    </select>

</mapper>


UserDao.java

public interface userDao {    
    public User findById(Integer id);
}


数据库User表
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eBe1XPqk-1587802859030)(en-resource://database/28648:1)]


User.java

public class User {

    Integer id;
    Integer role_id;
    String loginName;
    String password;
    String nickname;
    String headImg;
    //自己填充get\set\tostring方法
}


AppTest.java - 测试类

public class AppTest {

    InputStream is;
    SqlSessionFactory factory;
    SqlSession sqlSession;

    @Before
    public void prepare() throws IOException {
        // 加载myvatis全局配置文件
        is = Resources.getResourceAsStream("mybatisConfig.xml");

        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();

        // 根据配置文件进行初始化 数据库连接工厂
        factory = builder.build(is);
    }


    @Test
    public void  mybatis() throws IOException {

        // 获取数据库连接对象
        sqlSession = factory.openSession();

        // 根据Mmapper文件进行查询数据 = namespace+id
        User user = sqlSession.selectOne("top.linruchang.dao.UserDao.findById" ,1);

        // 利用反射进行封装dao层 - 该两条语句等于上面一条语句
        //UserDao userDaoImpl = sqlSession.getMapper(UserDao.class);
        //userDaoImpl.findById(1);

        System.out.println(user);

    }


    @After
    public void end() throws IOException {
        //关闭资源
        sqlSession.close();
        is.close();
    }

}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BktirbvU-1587802859038)(en-resource://database/28650:1)]

2. 基于注解使用

切记:注解跟 userMapper.xml不能同时配置在mybatisConfig.xml里面,会造成冲突。所以说要么使用注解进行映射SQL语句,要么使用xml进行映射SQL语句。只能二选一。


跟上面的步骤差不多

mybatisConfig.xml修改

<!-- class类名映射dao --> 
<mappers>
    <mapper class="top.linruchang.dao.UserDao"/>
</mappers>


UserDao.java

public interface UserDao {
    @Select("select * from ums_user where id = #{id}")
    public User findById(Integer id);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值