mybatis_单纯的测试第一次运行
配置文件
pom
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.20</version>
</dependency>
设置日志格式(非必要)
log4j.rootLogger=ERROR, stdout
log4j.logger.tk.mybatis.simple.mapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
mybatis-config.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">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="defaultStatementTimeout" value="3000"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="useGeneratedKeys" value="true"/>
<!--TODO 换logback 数据-->
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<!--该包下的类在使用时不用写出权限的名 只要类名就行-->
<package name="com.cctv.simple.model"/>
</typeAliases>
<environments default="development">
<environment id="development">
<!-- 配置事务管理 ,采用JDBC管理事务-->
<transactionManager type="JDBC"/>
<!-- POOLED是mybatis的 数据源 -->
<!-- JNDI是基于tomcat的数据源 -->
<!--TODO 换druid 还有那个hikia 2018年6月5日20:08:24-->
<dataSource type="POOLED">
<!--TODO 配置文件方式 + @configuration 2018年6月5日20:09:24-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url"
value="jdbc:mysql://116.196.72.142:3306/mybatis?useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="tangzekaiwawa"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--给出mapper.xml文件位置 因为mapper接口和xml对应关系 所以根据接口扫描xml也可以-->
<!--<com resource="com/cctv/simple/com/UserMapper.xml"/>-->
<package name="com.cctv.simple.mapper"/>
</mappers>
<!-- Continue going here -->
</configuration>
开始使用
Mapper.class
package com.cctv.simple.mapper;
import com.cctv.simple.model.SysUser;
public interface UserMapper {
SysUser selectUserById(Long id);
}
Mapper.xml
<?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">
<!--当前xml命名空间-->
<mapper namespace="com.cctv.simple.mapper.UserMapper">
<!-- <typeAliases>
该包下的类在使用时不用写出权限的名 只要类名就行
<package name="com.cctv.simple.model"/>
</typeAliases>
-->
<!--<select id="selectUserById" resultType="com.cctv.simple.model.SysUser">-->
<select id="selectUserById" resultType="SysUser">
select
id,
user_name userName,
user_password userPassword,
user_email userEmail,
user_info userInfo,
head_img headImg,
create_time createTime
-- 因为开启了驼峰所以这里的实体字段可以省略
from sys_user where id=#{id}
</select>
</mapper>
注意:mapper.xml和接口的包从java/resources下开始路径要一致
原因是配置的自动扫描 他会先扫java下接口mapper然后在resources下同位置找xml 找不到就报错
<mappers>
<!--给出mapper.xml文件位置 因为mapper接口和xml对应关系 所以根据接口扫描xml也可以-->
<!--<com resource="com/cctv/simple/com/UserMapper.xml"/>-->
<package name="com.cctv.simple.mapper"/>
</mappers>
如果路径无法保持一致的话可以用↓(?)
<mapepr resources="com/cctv/simple/mapper/xxx.xml">
开始测试
public class BaseMapperTest {
private static SqlSessionFactory factory;
@BeforeClass
public static void init() {
try {
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
e.printStackTrace();
}
}
public SqlSession getSqlsession() {
return factory.openSession();
}
}
public class FirstTest extends BaseMapperTest {
SqlSession sqlSession = getSqlsession();
@Test
public void SelectUserByIdTest() {
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
SysUser sysUser = userMapper.selectUserById(1L);
Assert.assertNotNull(sysUser);
sqlSession.close();
}
总结
一个窒息的问题 在idea里创建xml由于第一次设的格式不对不是.xml 然后改回.xml
发现xml不显示提示了就是普通的记事本那种效果 然后删了这个文件 新建也不管用 >idea对这个名字已经默认不是xml了还是怎么地 难受
学了忘忘了学 从现在起多总结吧 不然过几天又忘了