3、MyBatis中DAO开发
来源:互联网 发布:淘宝双11营业额直播 编辑:程序博客网 时间:2024/06/06 09:42
传统的DAO开发
创建DAO接口:
public interface UserDao { //获取所有 public List<User> getAll(); //模糊查询 public List<User> getLikeByName(String str); //删除 public void deleteById(int id); //修改 public void update(User user); //添加 public int insert(User user);}
创建实现类:
public class UserDaoImpl implements UserDao{ private SqlSessionFactory sqlSessionFactory = null; public UserDaoImpl(SqlSessionFactory sqlSessionFactory){ this.sqlSessionFactory = sqlSessionFactory; } @Override public List<User> getAll() { SqlSession session = this.sqlSessionFactory.openSession(); List<User> list = session.selectList("getAll"); session.commit(); session.close(); return list; } @Override public List<User> getLikeByName(String str) { SqlSession session = this.sqlSessionFactory.openSession(); List<User> list = session.selectList("getLikeByName", str); session.commit(); session.close(); return list; } @Override public void deleteById(int id) { SqlSession session = this.sqlSessionFactory.openSession(); session.delete("deleteUserById", id); session.commit(); session.close(); } @Override public void update(User user) { SqlSession session = this.sqlSessionFactory.openSession(); session.update("updateUser", user); session.commit(); session.close(); } @Override public int insert(User user) { SqlSession session = this.sqlSessionFactory.openSession(); session.insert("insertUser", user); session.commit(); session.close(); return user.getId(); }}
在传统的DAO开发中有许多重复性的代码,并且要指定执行的statement的id,这很繁琐。
MyBatis使用Mapper动态代理方式
我们只需要写一个mapper接口(相当于DAO接口)就可以进行和上面一样的操作了,当然,这肯定是要遵循一定的规定的。
4点:
1. mapper.xml文件中namespace与mapper接口的类路径相同;
2. Mapper接口的方法名和Mapper.xml中定义的statement的id相同;
3. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同;
4. Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同。
UserMapper.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="cn.xpu.hcp.bean.UserMapper"> <select id="getUserById" parameterType="int" resultType="cn.xpu.hcp.bean.User"> select * from user where id = #{id} </select> <!-- 查询所有 --> <select id="getAll" resultType="cn.xpu.hcp.bean.User"> select * from user </select> <!-- 模糊查询 --> <select id="getLikeByName" parameterType="string" resultType="cn.xpu.hcp.bean.User"> select * from user where username like "%"#{value}"%" </select> <!-- 添加 --> <insert id="insertUser" parameterType="cn.xpu.hcp.bean.User"> <!-- selectKey 标签实现主键的返回 keyColumn:主键对应表中列名 keyProperty:主键对应类中的属性名 order:设置在执行insert语句之前还是之后查询id,这里选择之后 --> <selectKey keyColumn="id" keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> insert into user (username,birthday,sex,address) values (#{username},#{birthday},#{sex},#{address}) </insert> <!-- 更新 --> <update id="updateUser" parameterType="cn.xpu.hcp.bean.User"> update user set username=#{username},birthday = #{birthday},sex = #{sex},address = #{address} WHERE id=#{id} </update> <!-- 删除 --> <delete id="deleteUserById" parameterType="int"> DELETE FROM USER WHERE id = #{id} </delete></mapper>
UserMapper接口:
public interface UserMapper { public User getUserById(int id); public List<User> getAll(); public List<User> getLikeByName(String str); public void insertUser(User user); public void updateUser(User user); public void deleteUserById(int id);}
仔细检查,符合上面的4个要求。
测试代码的编写:
@Testpublic void MapperTest(){ SqlSession session = sqlSessionFactory.openSession(); UserMapper mapper = session.getMapper(UserMapper.class); List<User> list = mapper.getAll(); for(User user:list){ System.out.println(user); } session.close();}
测试成功:
阅读全文
3 0
- 3、MyBatis中DAO开发
- Mybatis 开发dao层
- mybatis开发dao方法
- 原始DAO开发mybatis
- 使用Mybatis开发Dao
- mybatis开发dao方法
- 使用Mybatis开发Dao
- Mybatis(原始dao开发)
- Mybatis中mapper代理方法替换原始Dao开发方法
- Mybatis-Dao层开发之原始dao
- 使用mybatis开发原始dao
- Mybatis原始的dao开发
- mybatis之dao的开发
- MyBatis (二) Dao层开发
- MyBatis的Dao层开发
- Mybatis开发dao的方法
- mybatis开发dao的方法
- mybatis开发dao的方法
- java中参数传递问题
- springboot+mybatis 查询一下
- 蓄水池算法
- 第二章 虚拟化技术
- 树形DP
- 3、MyBatis中DAO开发
- js
- ITOP-4412 LED驱动实现
- 操作系统学习-3. 进程的基本概念
- linux安装jdk、tomcat、mysql
- gitbash的使用
- 堆和栈的区别
- ubuntu安装caffe完整版(GPU)
- java--