美文网首页
搭建一个SSM项目 - 4:M--MyBatis

搭建一个SSM项目 - 4:M--MyBatis

作者: 轻云绿原 | 来源:发表于2020-08-27 10:51 被阅读0次

前一章 搭建一个SSM项目 - 3:第二个S--Spring MVC

1:maven引入依赖

myBatis框架

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.4</version>
    </dependency>

mySql-connector(mysql的连接器)

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.20</version>
    </dependency>

日志输出

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

2:myBatis配置

官方文档:myBatis配置

  • 先扔总的
<?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="databaseConfig.properties"/>
    
    <settings>
        <setting name="logImpl" value="LOG4J" />
    </settings>
    
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
                <property name="url" value="${url}"/>
                <property name="driver" value="${driver}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/ppf/dao/IAccountDao.xml"/>
    </mappers>
</configuration>

把一些数据库连接属性放在外面的properties文件夹

<properties resource="databaseConfig.properties"/>
username=root
password=12345678
url=jdbc:mysql://localhost:3306/test
driver=com.mysql.cj.jdbc.Driver

关于myBatis的一些设置属性放下面

<settings>
    <!--日志输出-->
    <setting name="logImpl" value="LOG4J" />
</settings>

这里是数据库连接环境的设置,事务管理,连接参数等。

    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
                <property name="url" value="${url}"/>
                <property name="driver" value="${driver}"/>
            </dataSource>
        </environment>
    </environments>

注册哪些映射器mapper(或称dao)

    <mappers>
        <!--指定一个xml注册成mapper-->
        <mapper resource="com/ppf/dao/IAccountDao.xml"/>
        <!--把包下的所有都转成注册成mapper-->
        <package name="com.ppf.dao"/>
    </mappers>

3:log4j的配置

放在log4j.properties

log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.siliang.dao=debug
log4j.logger.com.ibatis=debug 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
log4j.logger.java.sql.Connection=debug 
log4j.logger.java.sql.Statement=debug 
log4j.logger.java.sql.PreparedStatement=debug 
log4j.logger.java.sql.ResultSet=debug 
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug

######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n


######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L)%m%n

log4j.logger.com.opensymphony.xwork2=error 

4:mapper的配置

注意:mapper的xml文件放在resources目录下,想对应的dao接口放在java目录下
并且,mapper的名字和dao的名字,路径要一样。
比如:
名字IAccountDao.java 包名:com.ppf.dao
名字IAccountDao.xml 路径:com/ppf/dao

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ppf.dao.IAccountDao">
    <select id="fetchSomeAccounts" resultType="com.ppf.domain.Account">
        select * from account limit #{offset},#{count};
    </select>
</mapper>

5:接口的创建

/**
 * 所有帐号相关的dao
 */
public interface IAccountDao {
    /**
     * 获取帐号列表
     * @param offset 偏移
     * @param count 一次获取的数量
     * @return
     */
    public List<Account> fetchSomeAccounts(@Param("offset") Integer offset,@Param("count") Integer count);
}

6:怎么用?

        InputStream stream = Resources.getResourceAsStream("myBatisConfig.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(stream);
        stream.close();
        
        try (SqlSession sqlSession = build.openSession()){
            IAccountDao mapper = sqlSession.getMapper(IAccountDao.class);
            List<Account> accounts = mapper.fetchSomeAccounts(0, 1);

            for (Account account : accounts) {
                System.out.println(account);
            }
        }

7:如果能运行起来,就说明myBatis已经配置完成


相关文章

网友评论

      本文标题:搭建一个SSM项目 - 4:M--MyBatis

      本文链接:https://www.haomeiwen.com/subject/rsjfsktx.html