Mybatis之Mapper动态代理方式
来源:互联网 发布:emlog博客源码 编辑:程序博客网 时间:2024/06/09 19:47
mybatis属于持久层框架,用它来写dao层开发者只需要编写mapper接口,由Mybatis框架根据接口定义创建接口的动态代理对象。
实体类User
public class User implements Serializable { private Integer id; private String username; private String password; private Date birthday; private String address; public User() { } public User(String username, String password, Date birthday, String address) { this.username = username; this.password = password; this.birthday = birthday; this.address = address; } get、set、toString方法}
sql映射文件User.xml中使用上一篇博文mybatis快速入门
中已经写好的,如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace:命名空间,用于隔离sql,名称要写对应的mapper接口全路径名 --><!-- 写sql语句 --><mapper namespace="com.scu.mybatis.mapper.UserMapper"> <!-- 插入数据 --> <insert id="save" parameterType="com.scu.mybatis.entity.User"> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO t_user (username,password,birthday,address) VALUES(#{username},#{password},#{birthday},#{address}) </insert> <!-- 根据id查询数据 --> <select id="findById" parameterType="int" resultType="com.scu.mybatis.entity.User"> SELECT * FROM t_user u WHERE u.id=#{id} </select> <!-- 查询所有用户信息 --> <select id="findList" resultType="com.scu.mybatis.entity.User"> SELECT * FROM t_user </select> <!-- 根据用户名模糊查询,一定要写成value不能写成username --> <select id="findByName" resultType="com.scu.mybatis.entity.User" parameterType="string"> SELECT * FROM t_user u WHERE u.username LIKE '%${value}%' </select> <!-- 修改用户信息 --> <update id="updateById" parameterType="com.scu.mybatis.entity.User"> UPDATE t_user u SET u.username=#{username},u.password=#{password}, u.birthday=#{birthday},u.address=#{address} WHERE u.id=#{id} </update> <!-- 删除 --> <deleteid="delete" parameterType="int"> DELETE FROM t_user WHERE id=#{id} </delete></mapper>
mapper接口
创建对应于User.xml的mapper接口UserMapper
Mapper接口开发需要遵循以下规范:
- 方法名要与User.xml中id一致;
- 返回参数类型要与User.xml中对应语句的返回参数类型(resultType)一致;
- 形参类型要与 User.xml中对应语句的入参(parameterType)类型一致;
- 另外,User.xml文件中的namespace要写UserMapper接口的完整路径名。
UserMapper接口如下
public interface UserMapper { //插入数据 public void save(User user); //根据id查询数据 public User findById(int id); //查询所有用户信息 public List<User> findList(); //根据用户名模糊查询 public List<User> findByName(String username); //修改用户信息 public void updateById(User user); //删除用户 public void delete(int id);}
分别测试上面6个方法:
1、创建SqlSessionFactoryBuilder;
2、获取SqlSessionFactory;
3、获取SqlSession;
4、获取UserMapper;
5、执行方法;
6、关闭SqlSession和输入流;
/** * 测试Mapper中的crud * @author 12706 * */public class UserMapperTest { InputStream inputStream; SqlSession session; @Before public void init() throws Exception{ String resource = "sqlMapConfig.xml"; inputStream = Resources.getResourceAsStream(resource); SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); SqlSessionFactory sqlSessionFactory = ssfb.build(inputStream); session = sqlSessionFactory.openSession(); } @After public void destroy() throws Exception{ inputStream.close(); session.close(); } @Test /* * 添加用户信息 */ public void testSave(){ User user = new User("小雨", "123456", new Date(), "安徽池州市"); //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); //添加用户信息 mapper.save(user); System.out.println(user.getId()); session.commit(); }}
添加用户后查看数据库t_user表,用户信息成功添加,并且控制台输出了3(新添加的用户id):
剩下的方法测试结果就不展示了
@Test /* * 获取单个对象 */ public void testFindById(){ //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); //根据id查询用户信息 User user = mapper.findById(2); System.out.println(user); } @Test /* * 获取对象集合 */ public void testFindList(){ //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); //查询用户列表 List<User> list = mapper.findList(); for (User user : list) { System.out.println(user); } } @Test /* * 模糊查询 */ public void testFindByName(){ //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); //用户名模糊查询用户列表 List<User> list = mapper.findByName("张"); for (User user : list) { System.out.println(user); } } @Test /* * 修改用户信息 */ public void testUpdate(){ //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); User user = mapper.findById(2); user.setUsername("小红"); user.setAddress("四川省成都市武侯区"); //更新id为2的用户信息 mapper.updateById(user); session.commit(); } @Test /* * 删除用户信息 */ public void testDelete(){ //获取Mapper UserMapper mapper = session.getMapper(UserMapper.class); mapper.delete(2); session.commit(); }
阅读全文
0 0
- Mybatis之Mapper动态代理方式
- Mybatis之Mapper动态代理方式
- MyBatis之 mapper代理方式
- MyBatis之Mapper动态代理
- Mybatis之Mapper动态代理
- Mybatis之Mapper动态代理
- Mybatis实现Mapper动态代理方式
- Mybatis实现Mapper动态代理方式
- mybatis(6)---mapper动态代理方式
- MyBatis之Mapper动态代理开发
- MyBatis---mapper动态代理
- Mapper动态代理方式
- mybatis之入门到开发(四)之 Mapper动态代理方式
- MyBatis学习记录(3):Mapper动态代理方式开发DAO
- mybatis开发Mapper代理方式
- Mybatis之Mapper代理开发方式(四)
- Mybatis之mapper代理方法
- mybatis入门--mapper代理方式开发
- Atitit 个人 企业 政府 等组织 财政收入分类与提升途径attilax总结 v2
- Python(三)
- ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open”的方法
- js监控enter键触发函数提交数据或者登陆
- 梯度下降
- Mybatis之Mapper动态代理方式
- Java语言匿名对象
- html-css练习题(系统提示)
- win10 vs2015超级宝典第五版环境搭建
- Ubuntu14.04 Linux4.x.x 下安装USB转串口驱动---cp210x
- RMQ和LCA在线算法
- KMS Tools Portable 01.09.2017│集成了各类常用的激活工具
- history.pushState()实现不跳转,改变路由异步刷新
- 支持向量机专题——线性可分支持向量机