mybatis与spring整合
导包
首先导入mybatis和spring所需要的jar包
spring配置文件
配置spring配置文件
测试一下是否配置成功:
编写实体类User
public class User {
private String id;
private String userName;
private String address;
public String
getId() {
System.
out.println(
"正在通过getId方法获取id的值:" + id);
return id;
}
public void setId(String id) {
System.
out.println(
"正在通过setId方法注入id的值:" + id);
this.id = id;
}
public String
getAddress() {
return address;
}
public void setAddress(String address) {
System.
out.println(
"正在通过setAddress方法注入address的值:" + address);
this.address = address;
}
@Override
public String
toString() {
return "{id:" + id +
",name:" + userName +
",address:" + address +
"}";
}
public String
getUserName() {
return userName;
}
public void setUserName(String userName) {
System.
out.println(
"正在通过setUserName方法注入userName的值:" + userName);
this.userName = userName;
}
}
编写映射文件User.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">
<mapper namespace="com.cc.mybatis.domain.User">
<resultMap type="User" id="userMap">
<id column="id" property="id"/>
<result column="name" property="userName"/>
<result column="address" property="address"/>
</resultMap>
<sql id="mysql">
id,name,address
</sql>
<select id="selectUserById" parameterType="string" resultMap="userMap">
select
<include refid="mysql"/> from user where id = #{userid}
</select>
<select id="selectAllUsers" resultType="User">
select id,name as userName ,address from user
</select>
<select id="selectUserByIdForMap" parameterType="string" resultType="hashmap">
select id,name,address from user where id = #{userid}
</select>
<select id="selectUserByCondition" parameterType="User" resultType="User">
select id,name as userName ,address from user where 1=1
<if test="id != null">
and id = #{id}
</if>
<if test="userName != null">
and name = #{userName}
</if>
<if test="address != null">
and address = #{address}
</if>
</select>
<select id="selectUserByCondition2" parameterType="User" resultType="User">
select id,name as userName ,address from user
<where>
<if test="id != null">
id = #{id}
</if>
<if test="userName != null">
and name = #{userName}
</if>
<if test="address != null">
and address = #{address}
</if>
</where>
</select>
<insert id="insertUser" parameterType="User">
insert into user (id,name,address) values (#{id},#{userName},#{address});
</insert>
<insert id="insertUserForMap" parameterType="hashmap">
insert into user (id,name,address) values (#{id},#{name},#{address});
</insert>
<delete id="deleteUserById" parameterType="string">
delete from user where id = #{id}
</delete>
<update id="updateUserById" parameterType="User">
update user set name = #{userName},address = #{address} where id = #{id}
</update>
<update id="updateUserByCondition" parameterType="User">
update user
<set>
<if test="userName != null">
name = #{userName},
</if>
<if test="address != null">
address = #{address}
</if>
</set>
where id = #{id}
</update>
<update id="updateUserByIdForMap" parameterType="hashmap">
update user set name = #{userName},address = #{address} where id = #{id}
</update>
</mapper>
加入映射文件
spring中引入mybatis的配置文件
上面加入的映射文件也可以不在sqlMapConfig.xml中书写,可以写在spring的配置文件中,如下:
加入Dao层和Service层实体类
public interface IUserDao {
public User
findUserById(String id);
public List<User>
findAllUser();
public List<User>
findUserByCondition(User u);
public int deleteUserById(String id);
public int saveUser(User u);
public int updateUserById(User u);
public int updateUser(User u);
}
public class UserDaoImpl extends SqlSessionDaoSupport implements IUserDao {
public User
findUserById(String id) {
return (User)
this.getSqlSession().selectOne(
"com.cc.mybatis.domain.User.selectUserById", id);
}
public int deleteUserById(String id) {
int i =
this.getSqlSession().delete(
"com.cc.mybatis.domain.User.deleteUserById", id);
return i;
}
public List<User>
findAllUser() {
return this.getSqlSession().selectList(
"com.cc.mybatis.domain.User.selectAllUsers");
}
public List<User>
findUserByCondition(User u) {
return this.getSqlSession().selectList(
"com.cc.mybatis.domain.User.selectUserByCondition", u);
}
public int saveUser(User u) {
int i =
this.getSqlSession().insert(
"com.cc.mybatis.domain.User.insertUser", u);
return i;
}
public int updateUserById(User u) {
int i =
this.getSqlSession().update(
"com.cc.mybatis.domain.User.updateUserById", u);
return i;
}
public int updateUser(User u) {
int i =
this.getSqlSession().update(
"com.cc.mybatis.domain.User.updateUserByCondition", u);
return i;
}
}
public interface IUserService {
public User
findUserById(String id);
public List<User>
findAllUser();
public List<User>
findUserByCondition(User u);
public int deleteUserById(String id);
public int saveUser(User u);
public int updateUserById(User u);
public int updateUser(User u);
}
public class UserServiceImpl implements IUserService {
private IUserDao userDao;
public int deleteUserById(String id) {
int i = userDao.deleteUserById(id);
return i;
}
public List<User>
findAllUser() {
return userDao.findAllUser();
}
public List<User>
findUserByCondition(User u) {
return userDao.findUserByCondition(u);
}
public User
findUserById(String id) {
return userDao.findUserById(id);
}
public int saveUser(User u) {
return userDao.saveUser(u);
}
public int updateUser(User u) {
return userDao.updateUser(u);
}
public int updateUserById(User u) {
return userDao.updateUserById(u);
}
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
}
在spring配置中注入dao和service
测试
测试成功,表示mybatis和spring已经成功整合了。
通过springAOP加入事务
故意出错:
测试结果:
数据依然存在,说明事务也已经配置成功了。
测试代码如下:
public class MyBatisTest {
@Test
public void test1(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
User u = userDao.findUserById(
"1");
System.
out.println(u);
}
@Test
public void test2(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
List<User> users = userDao.findAllUser();
for(User u: users){
System.
out.println(u);
}
}
@Test
public void test3(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
User user =
new User();
user.setId(
"0002");
user.setUserName(
"lisi");
user.setAddress(
"beijing");
List<User> users = userDao.findUserByCondition(user);
for(User u: users){
System.
out.println(u);
}
}
@Test
public void test4(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
int i = userDao.deleteUserById(
"0002");
System.
out.println(i);
}
@Test
public void test5(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
User user =
new User();
user.setId(
"0002");
user.setUserName(
"lisi");
user.setAddress(
"beijing");
int i = userDao.saveUser(user);
System.
out.println(i);
}
@Test
public void test6(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
User user =
new User();
user.setId(
"0003");
user.setUserName(
"zhangsan");
int i = userDao.updateUserById(user);
System.
out.println(i);
}
@Test
public void test7(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserDao userDao = (IUserDao) ctx.getBean(
"userDao");
User user =
new User();
user.setId(
"0004");
int i = userDao.updateUser(user);
System.
out.println(i);
}
@Test
public void test8(){
ApplicationContext ctx =
new ClassPathXmlApplicationContext(
"beans.xml");
IUserService userService = (IUserService) ctx.getBean(
"userService");
int i = userService.deleteUserById(
"1");
System.
out.println(i);
}
}
c.
认证博客专家
MySQL
Java
Elasticsearch
github:https://github.com/cckevincyhgitee:https://gitee.com/cckevincyh