一、项目结构:
创建一个java 工程,如下结构,添加jar包
二 、创建数据库表
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`class` varchar(30) DEFAULT NULL,
`gender` varchar(6) DEFAULT NULL,
created_at datetime,
updated_at timestamp,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8
三、 配置文件
1、配置 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>
<!-- 配置 domain 的别名,方便在mapper.xml中映射 -->
<typeAliases>
<typeAlias type="com.my.springmybatis.domain.StudentVo" alias="StudentsVo22" />
</typeAliases>
<!-- ***************************Spring整合myBatis后,这个配置文件基本可以不要了********************************** -->
<!-- 设置外部配置文件 -->
<!-- <properties resource="jdbc.properties" /> -->
<!-- 设置类别名 -->
<!--
<typeAliases>
<package name="com.my.springmybatis.domian"/>
</typeAliases>
<typeAliases>
<typeAlias type="com.my.springmybatis.domian.StudentVo" alias="StudentVo" />
</typeAliases>
-->
<!-- 设置数据库连接环境 -->
<!--
<environments default="monday">
<environment id="monday">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
-->
<!-- 映射文件 -->
<!--
<mappers>
<mapper resource="com/my/springmybatis/mappers/StudentMapper.xml" />
</mappers>
<mappers>
<package name="com.my.springmybatis.mappers"/>
</mappers>
-->
</configuration>
2、配置spring-application.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 属性文件 -->
<context:property-placeholder location="jdbc.properties" />
<!-- 扫描注解的包-->
<context:component-scan base-package="com.my.springmybatis.*"/>
<!-- 数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.url}"
p:username="${jdbc.username}"
p:password="${jdbc.password}"/>
<!--
class: 指定用来创建sqlSession的工厂
dataSource-ref: 使用的数据源
typeAliasesPackage: 自动扫描的实体类包 ,默认以实体类名为别名等同于在mybatis-config.xml中如下配置
<typeAlias type="com.my.springmybatis.domain.StudentsVo" alias="StudentsVo" />
p:typeAliasesPackage="com.my.springmybatis.domain" ===== p:configLocation="classpath:mybatis-config.xml"
(这两个选择一个进行配置即可)
mapperLocations:匹配实体对应的Mapper.xml 文件,可如下匹配(但是遵循最长匹配原则)
**/*Mapper.xml
com/my/springmybatis/mappers/*Mapper.xml
classpath:com/my/springmybatis/mappers/*Mapper.xml
classpath*:com/my/springmybatis/mappers/*Mapper.xml
p:mapperLocations="com/my/springmybatis/mappers/*Mapper.xml"
p:typeAliasesPackage="com.my.springmybatis.domain"
p:configLocation="classpath:mybatis-config.xml"
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource"
p:configLocation="classpath:mybatis-config.xml"
p:mapperLocations="com/my/springmybatis/mappers/*Mapper.xml"
/>
<!--或者如下配置 -->
<!-- <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
p:dataSource-ref="dataSource"
p:typeAliasesPackage="com.my.springmybatis.domain"
p:mapperLocations="com/my/springmybatis/mappers/*Mapper.xml"
/>
-->
<!-- p:typeAliasesPackage="com.my.springmybatis.domain" -->
<!--如果不配置,则 注入bean 异常,找不到domain类 -->
<!-- 如果不配置下面的:
p:mapperLocations="com/my/springmybatis/mappers/StudentsMapper.xml"
则报如下异常:
Mapped Statements collection does not contain value for com.my.springmybatis.mappers.StudentsMapper.insert-->
<!--
class : 指定自动扫描xxxMapper.xml映射文件的类
basePackage: 自动扫描的配置包 **/*Mapper.xml
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
p:basePackage="com.my.springmybatis.mappers"
p:sqlSessionFactoryBeanName="sqlSessionFactory"/>
<!-- p:basePackage="com.my.springmybatis.mappers" -->
<!-- java.lang.IllegalArgumentException: Property 'basePackage' is required -->
<!-- 事务管理 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
p:dataSource-ref="dataSource"/>
<tx:annotation-driven transaction-manager="txManager" />
</beans>
3、配置jdbc 属性文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=root
4、配置log4J日志输出格式
log4j.rootLogger = DEBUG , stdout
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %-d{yyyy-MM-dd HH\:mm\:ss} [ %p ] %m (%F\:%L)%n
#log4j.logger.org.apache.ibatis = DEBUG
#log4j.logger.org.apache.ibatis.jdbc.ScriptRunner = DEBUG
#log4j.logger.org.monday.mappers.UserMapper = TRACE
#log4j.logger.java.sql.Connection = DEBUG
#log4j.logger.java.sql.Statement = DEBUG
#log4j.logger.java.sql.PreparedStatement = DEBUG ,CONSOLE
#log4j.logger.java.sql.ResultSet = DEBUG ,CONSOLE,sqllog
四、创建domain类
public class StudentVo {
private int id;
private String name;
private String clazz;
private String gender;
private Date createdAt;
private Date updatedAt;
public StudentVo() {
super();
}
public StudentVo(String name, String clazz, String gender) {
super();
this.name = name;
this.clazz = clazz;
this.gender = gender;
}
public StudentVo(int id, String name, String clazz, String gender,Date createdAt,Date updatedAt) {
super();
this.id = id;
this.name = name;
this.clazz = clazz;
this.gender = gender;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
public Date getUpdatedAt() {
return updatedAt;
}
public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt;
}
@Override
public String toString() {
return "StudentVo [id=" + id + ", name=" + name + ", clazz=" + clazz
+ ", gender=" + gender + ", createdAt=" + createdAt
+ ", updatedAt=" + updatedAt + "]";
}
五、创建domain 对应的mapper
<?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.my.springmybatis.mappers.StudentMapper">
<resultMap type="StudentsVo22" id="studentsResult">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="class" property="clazz"/>
<result column="gender" property="gender"/>
<result column="created_at" property="createdAt"/>
<result column="updated_at" property="updatedAt"/>
</resultMap>
<insert id="insert" parameterType="StudentsVo22" keyProperty="id" keyColumn="id" useGeneratedKeys="true" >
insert into students(name,class,gender,created_at,updated_at)
values(#{name},#{clazz},#{gender},now(),now());
</insert>
</mapper>
六、编写测试类
@RunWith(SpringJUnit4ClassRunner.class) //使用Springtest框架
@ContextConfiguration("/spring-application.xml")//加载配置文件
public class TestStudent {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Test
public void addStudent() {
StudentVo vo = new StudentVo("侠岚", "五二班", "男");
SqlSession sqlSession = sqlSessionFactory.openSession(true);
String statement = "com.my.springmybatis.mappers.StudentMapper.insert";
sqlSession.insert(statement, vo);
sqlSession.commit();
sqlSession.close();
}
}
资源下载地址:
http://download.youkuaiyun.com/detail/tangfeng61/9407817