前一章 搭建一个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配置
-
先扔总的
<?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);
}
}