1.导入依赖jar包
<!--mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!--spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.10.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
<!--c3p0 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.11</version>
</dependency>
<!--jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
2.创建Mybatis配置文件(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>
<typeAliases>
<package name="com.demo.pojo"/>
</typeAliases>
<!-- 配置分页插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
</configuration>
3.创建spring配置文件(applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--开启注解-->
<context:component-scan base-package="com.demo"/>
<!--数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"/>
<property name="jdbcUrl" value="jdbc:mysql:///csdn"/>
<property name="user" value="root"/>
<property name="password" value="mysql"/>
</bean>
<!--创建SQLSession-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<!--mapper接口批量扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.demo.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
<!-- 配置事务-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启事务注解-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
4.配置StudentMapper.xml(配置在resources目录下,新建包名和配置文件名和src下的目录一致,在resources创建目录注意使用 (.)(/)有的时候使用(.)创建目录会出现问题,例如(com.demo.test一般情况是创建一个三级目录,使用(.)可能只会创建一个(com.demo.test)目录)
<?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.demo.mapper.StudentMapper">
<insert id="add" parameterType="Student">
insert into student(sname,sage)values(#{stu.name},#{stu.age})
</insert>
<delete id="delete">
delete from student where sid = #{id}
</delete>
<update id="update">
update student
<set>
<if test="stu.name!=null">sname=#{stu.name},</if>
<if test="stu.age>0">sage=#{stu.age},</if>
</set>
where sid = #{stu.id}
</update>
<select id="queryById" resultMap="queryMap">
select * from student where sid=#{id}
</select>
<select id="queryAll" resultMap="queryMap">
select * from student
</select>
<select id="query" resultMap="queryMap">
select * from student
<where>
<if test="stu.name!=null">sname=#{stu.name}</if>
<if test="stu.age>0"> and sage=#{stu.age}</if>
</where>
</select>
<resultMap id="queryMap" type="Student">
<id column="sid" property="id"/>
<result column="sname" property="name"/>
<result column="sage" property="age"/>
</resultMap>
</mapper>
5.pojo类(Student)
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {this.age = age; }
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}'; }
public Student() { }
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
}
6.编写StudentMapper接口
public interface StudentMapper {
public boolean add(@Param("stu") Student stu);
public boolean delete(@Param("id")int id);
public boolean update(@Param("stu")Student stu);
public Student queryById(@Param("id")int id);
public List<Student> query(@Param("stu")Student stu);
public List<Student> queryAll();
}
7.StudentService
@Service
@Transactional //事务注解
public class StudentService {
@Resource
private StudentMapper studentMapper;
public boolean add(Student stu){
return studentMapper.add(stu);
}
public boolean delete(int id){
return studentMapper.delete(id);
}
public boolean update(Student stu){
return studentMapper.update(stu);
}
public Student queryById(int id){
return studentMapper.queryById(id);
}
public List<Student> query(Student stu){
return studentMapper.query(stu);
}
public List<Student> queryAll(){
return studentMapper.queryAll();
}
}
8.Test(没有具体测试事务)
@Test
public void myTest() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
StudentService service = (StudentService) context.getBean("studentService");
PageHelper.startPage(1, 1);
List<Student> list = service.queryAll();
PageInfo<Student> pageInfo = new PageInfo<>(list);
System.out.println(pageInfo.getList().get(1));
}
项目目录