mybatis与spring整合
来源:互联网 发布:淘宝banner尺寸大小 编辑:程序博客网 时间:2024/05/18 15:28
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 mapperPUBLIC "-//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); }}
0 0
- spring与mybatis整合
- 整合spring与myBatis
- mybatis 与 spring 整合
- mybatis与spring整合
- mybatis与spring整合
- mybatis与spring整合
- spring与mybatis整合
- spring与mybatis整合
- Spring与Mybatis整合
- Mybatis与Spring整合
- spring与mybatis整合
- mybatis与spring整合
- spring与mybatis整合
- Mybatis与Spring整合
- MyBatis与Spring整合
- Spring与MyBatis整合
- Spring与MyBatis整合
- mybatis与spring整合
- 因子分析、主成分分析(PCA)、独立成分分析(ICA)——斯坦福CS229机器学习个人总结(六)
- LeetCode (Merge Intervals)
- Java泛型_嵌套_其它
- 面试总结(4):top、left、right、bottom 和 translationX、translationY 和 scrollX,scrollY的区别
- 成功的人在多于2个方面都做的好
- mybatis与spring整合
- Android 备忘录 -- Intent
- APP开发实战169-屏幕纵横比的参数设置
- 链表箱子排序问题
- ios xcode 方法摘要
- scrapy http status codes
- longestCommonPrefix
- hive原理与源码分析-语法分析器和语义分析器(二)
- PHP递归实现无限级分类并展示