mybatis与spring整合

xiaoxiao2021-02-28  83

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> <!-- 根据id查询User --> <!-- id:当前sql语句的唯一标示 parameterType:参数类型 resultType:结果类型(返回值类型)--> <select id="selectUserById" parameterType="string" resultMap="userMap"> select <include refid="mysql"/> from user where id = #{userid} </select> <!-- 查询所有User --> <select id="selectAllUsers" resultType="User"> select id,name as userName ,address from user </select> <!-- 根据id查询User,返回值为:Map --> <select id="selectUserByIdForMap" parameterType="string" resultType="hashmap"> select id,name,address from user where id = #{userid} </select> <!-- 动态sql --> <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> <!-- userName指的是实体的属性 --> <if test="userName != null"> and name = #{userName} </if> <if test="address != null"> and address = #{address} </if> </select> <!-- 动态sql --> <select id="selectUserByCondition2" parameterType="User" resultType="User"> select id,name as userName ,address from user <where> <if test="id != null"> id = #{id} </if> <!-- userName指的是实体的属性 --> <if test="userName != null"> and name = #{userName} </if> <if test="address != null"> and address = #{address} </if> </where> </select> <!-- 插入User --> <insert id="insertUser" parameterType="User"> insert into user (id,name,address) values (#{id},#{userName},#{address}); </insert> <!-- 插入User 参数为hashmap--> <insert id="insertUserForMap" parameterType="hashmap"> insert into user (id,name,address) values (#{id},#{name},#{address}); </insert> <!-- 根据id删除User --> <delete id="deleteUserById" parameterType="string"> delete from user where id = #{id} </delete> <!-- 根据id更新User --> <update id="updateUserById" parameterType="User"> update user set name = #{userName},address = #{address} where id = #{id} </update> <!-- 动态更新user --> <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> <!-- 根据id更新User 参数为map--> <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); //int c = 1 / 0; 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"); //user.setAddress("nanjing"); 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"); //user.setUserName("jack"); //user.setAddress("beijing"); 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
转载请注明原文地址: https://www.6miu.com/read-78007.html

最新回复(0)