第一步:
创建一个maven项目,采用webapp模板进行创建
导入依赖
<dependencies>
<!--spring相关依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--servlet规范-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
</dependency>
<!--mysql相关-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--jdbc相关-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--mybatis相关-->
<!--与spring整合-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.6</version>
</dependency>
<!--测试依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
第二步:
创建spring配置文件
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!--spring 注解扫描-->
<context:component-scan base-package="com.zc"/>
</beans>
这时我们想整合mybatis,发现我们还没有创建mybatis的配置文件,也没有写相关的代码
我们先完成代码的编写,创建包 com.zc.dao,然后创建UserDao编写相关方法
实体类编写
public class User implements Serializable {
private String userName;
private Integer id;
private String phone;
private String gender;
private String password;
public User(String userName, Integer id, String phone, String gender, String password) {
this.userName = userName;
this.id = id;
this.phone = phone;
this.gender = gender;
this.password = password;
}
public User(String userName, String phone, String gender, String password) {
this.userName = userName;
this.phone = phone;
this.gender = gender;
this.password = password;
}
public User() {
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", id=" + id +
", phone='" + phone + '\'' +
", gender='" + gender + '\'' +
", password='" + password + '\'' +
'}';
}
}
public interface UserDao {
List<User> selectAll();
User selectById(Integer id);
void addUser(User user);
void deleteById(Integer id);
void updateUser(User user);
}
然后需要创建com.zc.service包,创建userService然后编写同样的方法.在service包下创建impl包,编写实现类实现userService
@Service
public class UserServiceImpl implements Userservice {
@Autowired
private UserDao userDao;
public List<User> selectAll() {
return userDao.selectAll();
}
public User selectById(Integer id) {
return userDao.selectById(id);
}
public void addUser(User user) {
userDao.addUser(user);
}
public void deleteById(Integer id) {
userDao.deleteById(id);
}
public void updateUser(User user) {
userDao.updateUser(user);
}
}
编辑userDao.xml,层结构需要和userDao保持一致,方法根据需要编写就行
<?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.zc.dao.UserDao">
<select id="selectAll" resultType="com.zc.domain.User">
select * from user
</select>
<select id="selectById" resultType="com.zc.domain.User" parameterType="Integer">
select * from user where id = #{id}
</select>
<insert id="addUser" parameterType="user">
insert into user (username , password , gender , phone) value (
#{userName},#{password},#{gender},#{phone}
)
</insert>
<delete id="deleteById" parameterType="Integer">
delete user where id = #{id}
</delete>
<update id="updateUser" parameterType="com.zc.domain.User">
update user set
<if test="userName != null and userName != ''">
username = #{userName},
</if>
<if test="password != null and password != ''">
password = #{password},
</if>
<if test="gender != null and gender != ''">
gender = #{gender},
</if>
<if test="phone != null and phone != ''">
phone = #{phone}
</if>
where id = #{id}
</update>
</mapper>
这个时候我们就需要开始在配置文件中整合mybatis了
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<!--spring 注解扫描-->
<context:component-scan base-package="com.zc"/>
<!--spring 整合mybatis-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref=""/>
<property name="typeAliasesPackage" value=""/>
</bean>
</beans>
这时我们发现,我们还没有dataSource对象,需要什么,我们就提供什么。首先创建jdbc.porpertis文件,这样方便我们以后修改数据库信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/db2?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
然后在配置文件中,定义dataSource bean,开启事物注解扫描等
<!--spring 注解扫描-->
<context:component-scan base-package="com.zc"/>
<!--扫描jdbc.properties-->
<context:property-placeholder location="classpath*:jdbc.properties"/>
<tx:annotation-driven transaction-manager="txMannager"/>
<!--数据源-->
<bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!--spring 整合mybatis-->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.zc.domain"/>
</bean>
<!--开启mapper映射扫描-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.zc.dao"/>
</bean>
<bean id="txMannager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
我们在userService上开启事物注解扫描
@Transactional(readOnly = true)
public interface Userservice {
List<User> selectAll();
User selectById(Integer id);
@Transactional(readOnly = false)
void addUser(User user);
@Transactional(readOnly = false)
void deleteById(Integer id);
@Transactional(readOnly = false)
void updateUser(User user);
}
第三步
一切准备就绪我们就可以开始测试了
@RunWith(SpringJUnit4ClassRunner.class)//指定测试环境
@ContextConfiguration(locations = "classpath:applicationContext.xml")//指定配置文件
public class UserServiceTest {
@Autowired
private Userservice userservice;
@Test
public void testAdd(){
User user = new User("王五", "13986071730", "男", "12345");
userservice.addUser(user);
}
@Test
public void select(){
List<User> users = userservice.selectAll();
for (User user : users) {
System.out.println(user);
}
}
@Test
public void update(){
User user = new User("王五", 3,"11111111111", "男", "12345");
userservice.updateUser(user);
}
@Test
public void selectById(){
System.out.println(userservice.selectById(1));
}
}
写的比较粗糙,如果有需要可以参考一下~