上一篇:1、快速上手第一个Mybatis程序
编写Dao/Mapper接口对应的方法
// 1、增加用户 int addUser(User user);编写方法对应的Mapper.xml中的SQL语句
<!-- 1、添加用户 --> <insert id="addUser" parameterType="com.mybatis.pojo.User"> insert into user (username, password, sex, birthday, address) values (#{username}, #{password}, #{sex}, #{birthday}, #{address}) </insert>编写测试方法及进行测试
@Test public void addUser() { // 1、执行添加方法 userDao.addUser(new User(null,"黄瑾晨","h321456","男",new Date(),"遵义市-红花岗区")); }测试结果
编写Dao/Mapper接口对应的方法
// 2、根据id删除用户 int deleteUser(int id);编写方法对应的Mapper.xml中的SQL语句
<!-- 2、根据id删除用户 --> <delete id="deleteUser" parameterType="int"> delete from user where id = #{id} </delete>编写测试方法及进行测试
@Test public void deleteUser() { // 1、执行根据id删除用户方法 userDao.deleteUser(5); }测试结果
编写Dao/Mapper接口对应的方法
// 3、更改用户信息 int updateUser(User user);编写方法对应的Mapper.xml中的SQL语句
<!-- 3、更改用户信息 --> <update id="updateUser" parameterType="com.mybatis.pojo.User"> update user set username=#{username},password=#{password},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id} </update>编写测试方法及进行测试
@Test public void updateUser() { User user = new User(); user.setId(4); user.setUsername("苏安然"); user.setPassword("s778855"); user.setSex("男"); user.setBirthday(new Date()); user.setAddress("贵阳市-观山湖区"); // 执行更新用户信息方法 userDao.updateUser(user); }测试结果
编写Dao/Mapper接口对应的方法
// 4、查询所有用户信息 List<User> findAll(); // 5、根据id查找用户信息 User findById(int id);编写方法对应的Mapper.xml中的SQL语句
<!-- 4、查新所有用户信息 --> <select id="findAll" resultType="com.mybatis.pojo.User"> select * from user </select> <!-- 5、根据id查询用户信息 --> <select id="findById" parameterType="int" resultType="com.mybatis.pojo.User"> select * from user where id = #{id} </select>编写测试方法及进行测试
@Test public void findAll() { // 1、执行查询所有方法 List<User> users = userDao.findAll(); // 2、打印查询结果 for(User user: users) { System.out.println(user); } } @Test public void findById() { // 1、执行根据id查询用户方法 User users = userDao.findById(3); // 2、打印查询结果 System.out.println(users); }测试结果
当实体类参数过多、数据库表字段过多时,我们可以考虑使用Map;
使用Map传参,直接在SQL语句中取出key即可!【parameterType=“map”】使用对象传参,直接在SQL语句中取出对象的属性即可!【parameterType=“Object”】使用一个基本类型传参,可直接在SQL中取到!【parameterType=“基本类型” 可以不写这个属性】多个参数用Map或者注解!编写Dao/Mapper接口
// 6、使用Map传参查询用户 User findByNameAndPwd(Map<String, Object> map);编写Mapper.xml
<!-- 6、通过Map传参查询用户信息 --> <select id="findByNameAndPwd" parameterType="map" resultType="com.mybatis.pojo.User"> select * from user where username = #{name} and password = #{pwd} </select>编写测试方法及进行测试
@Test public void findByNameAndPwd() { Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "苏瑞韩"); map.put("pwd", "s653249"); User user = userDao.findByNameAndPwd(map); System.out.println(user); }执行结果
Java代码执行时,传入通配符% %
List<User> users = userDao.findLike("%苏%"); <!-- 7、根据名称模糊查询 --> <select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User"> select * from user where username like #{value} </select>在SQL拼接中使用通配符(不安全,存在SQL注入问题)
List<User> users = userDao.findLike("苏"); <!-- 7、根据名称模糊查询 --> <select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User"> select * from user where username like "%"#{value}"%" </select>执行findLike()模糊查询
@Test public void findLike() { List<User> users = userDao.findLike("%苏%"); // List<User> users = userDao.findLike("苏"); for (User user:users) { System.out.println(user); } }执行结果
UserDao.java
/** * 用户持久层 */ public interface UserDao { // 1、增加用户 int addUser(User user); // 2、根据id删除用户 int deleteUser(int id); // 3、更改用户信息 int updateUser(User user); // 4、查询所有用户信息 List<User> findAll(); // 5、根据id查找用户信息 User findById(int id); // 6、使用Map传参查询用户 User findByNameAndPwd(Map<String, Object> map); // 7、模糊查询 List<User> findLike(String value); }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"> <!-- namespace属性的值为UserDao接口的全限定类名 --> <mapper namespace="com.mybatis.dao.UserDao"> <!-- 1、添加用户 --> <insert id="addUser" parameterType="com.mybatis.pojo.User"> insert into user (username, password, sex, birthday, address) values (#{username}, #{password}, #{sex}, #{birthday}, #{address}) </insert> <!-- 2、根据id删除用户 --> <delete id="deleteUser" parameterType="int"> delete from user where id = #{id} </delete> <!-- 3、更改用户信息 --> <update id="updateUser" parameterType="com.mybatis.pojo.User"> update user set username=#{username},password=#{password},sex=#{sex},birthday=#{birthday},address=#{address} where id=#{id} </update> <!-- 4、查新所有用户信息 --> <select id="findAll" resultType="com.mybatis.pojo.User"> select * from user </select> <!-- 5、根据id查询用户信息 --> <select id="findById" parameterType="int" resultType="com.mybatis.pojo.User"> select * from user where id = #{id} </select> <!-- 6、通过Map传参查询用户信息 --> <select id="findByNameAndPwd" parameterType="map" resultType="com.mybatis.pojo.User"> select * from user where username = #{name} and password = #{pwd} </select> <!-- 7、根据名称模糊查询 --> <select id="findLike" parameterType="string" resultType="com.mybatis.pojo.User"> select * from user where username like #{value} </select> </mapper>UserDaoTest.java
public class UserDaoTest { private SqlSession sqlSession; private UserDao userDao; @Before public void init() { // 1、获取SqlSession对象 sqlSession = MybatisUtils.getSqlSession(); // 2、获取UserDao的代理对象 userDao = sqlSession.getMapper(UserDao.class); } @After public void destroy() { // 1、提交事务(Mybatis的插入、删除、更新等采用了事务管理) sqlSession.commit(); // 2、释放资源 sqlSession.close(); } @Test public void addUser() { // 1、执行添加方法 userDao.addUser(new User(null,"黄瑾晨","h321456","男",new Date(),"遵义市-红花岗区")); } @Test public void deleteUser() { // 1、执行根据id删除用户方法 userDao.deleteUser(5); } @Test public void updateUser() { User user = new User(); user.setId(4); user.setUsername("苏安然"); user.setPassword("s778855"); user.setSex("男"); user.setBirthday(new Date()); user.setAddress("贵阳市-观山湖区"); // 执行更新用户信息方法 userDao.updateUser(user); } @Test public void findAll() { // 1、执行查询所有方法 List<User> users = userDao.findAll(); // 2、打印查询结果 for(User user: users) { System.out.println(user); } } @Test public void findById() { // 1、执行根据id查询用户方法 User users = userDao.findById(3); // 2、打印查询结果 System.out.println(users); } @Test public void findByNameAndPwd() { Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "苏瑞韩"); map.put("pwd", "s653249"); User user = userDao.findByNameAndPwd(map); System.out.println(user); } @Test public void findLike() { List<User> users = userDao.findLike("%苏%"); // List<User> users = userDao.findLike("苏"); for (User user:users) { System.out.println(user); } } }以上为Mybatis简单的CRUD操作!
