Mybatis基本应用 导入依赖 1 2 3 4 5 <dependency > <groupId > org.mybatis.spring.boot</groupId > <artifactId > mybatis-spring-boot-starter</artifactId > <version > 2.2.2</version > </dependency >
application.yaml中配置数据 1 2 3 4 5 mybatis: mapper-locations: classpath:mapper/*.xml type-aliases-package: com.example.demo.entity configuration: map-underscore-to-camel-case: true
Xml配置Mybatis 编写Mapper 1 2 3 4 5 6 7 8 9 @Mapper @Repository public interface UserMappers { public int saveUser (User user) ; public List<User> getAllUser () ; public int updateUser (User user) ; public int deleteUser (int id) ; public User selectById (@PathVariable("id") int id) ; }
classpath中配置元数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?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.example.demo.mapper.UserMappers" > <select id ="selectById" parameterType ="int" resultType ="User" > select * from user where id = #{id} </select > <select id ="getAllUser" resultType ="User" > select * from user </select > <update id ="updateUser" parameterType ="User" > update user set username = #{username},email = #{email},is_active=#{isActive},birthday=#{birthday} where id = #{id} </update > <insert id ="saveUser" parameterType ="User" > insert into user (username,email,birthday,is_active) values (#{username},#{email},#{birthday},#{isActive}) </insert > <delete id ="deleteUser" parameterType ="int" > delete from user where id = #{id} </delete > </mapper >
测试一下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 @Autowired private UserMapper userMappers;@Test void insertOnes () { User user = new User (); user.setUsername("13125214254" ); user.setBirthday("2005-3-5" ); user.setEmail("822807553@qq.com" ); user.setIsActive(1 ); int i = userMappers.saveUser(user); if (i > 0 ){ System.out.println("添加成功!" ); }else { System.out.println("添加失败!" ); } }
注解配置Mybatis 编写Mapper并配置Mybatis 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Mapper @Repository public interface UserMapper { @Insert("insert into user(username,email,birthday,is_active) values(#{username},#{email},#{birthday},#{isActive})") public int saveUser (User user) ; @Select("select * from user") public List<User> getAllUser () ; @Update("update user set username = #{username},email=#{email},birthday=#{birthday},is_active=#{isActive}") public int updateUser (User user) ; @Delete("delete from user where id =#{id}") public int deleteUser (int id) ; @Select("select * from user where id = #{id}") public User selectById (Integer id) ; }
测试一下 1 2 3 4 5 6 7 8 9 @Autowired private UserMapper userMapper;@Test void selectAll () { List<User> allUser = userMapper.getAllUser(); for (User u : allUser){ System.out.println(u); } }
分页查询 编写dao 1 2 3 4 5 6 7 @Mapper @Repository public interface PositionDao { @Select("select * from user limit #{curPage},#{pageSize}") public List<User> getAllPosition (@Param("curPage") Integer curPage,@Param("pageSize") Integer pageSize) ; }
编写service接口 1 2 3 public interface PositionService { public List<User> getAllPosition (Integer curPage, Integer pageSize) ; }
实现service接口 1 2 3 4 5 6 7 8 9 @Service public class PositionServiceImp implements PositionService { @Autowired private PositionDao positionDao; @Override public List<User> getAllPosition (Integer curPage, Integer pageSize) { return positionDao.getAllPosition(curPage,pageSize); } }
编写controller 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 @Autowier private PositionService positionService@GetMapping("/position") public Object getAllPositionLimit (@RequestParam("curPage") Integer curPage,@RequestParam("pageSize") Integer pageSize) { Map<String,Object> map = new HashMap <>(); List<User> list = positionService.getAllPosition((curPage-1 )*pageSize,pageSize); if (list!=null &&list.size()>0 ){ map.put("code" ,200 ); map.put("msg" ,"查询成功" ); map.put("data" ,list); }else { map.put("code" ,100 ); map.put("msg" ,"暂时没有数据" ); } return map; }
测试一下 运行springboot访问position路径并且携带curPage和pageSize数据(http://localhost:8080/position?curPage=1&pageSize=5 )
Mybatis分页插件 Mybatis 一对一 创建实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 @Component public class Emp { private int id; private String username; private String password; private String name; private int gender; private String image; private String job; private String entrydate; private int deptId; private String createTime; private String updateTime; private Dept dept; private Company company; public Company getCompany () { return company; } public void setCompany (Company company) { this .company = company; } public Dept getDept () { return dept; } public void setDept (Dept dept) { this .dept = dept; } @Override public String toString () { return "Emp{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + ", name='" + name + '\'' + ", gender=" + gender + ", image='" + image + '\'' + ", job='" + job + '\'' + ", entrydate='" + entrydate + '\'' + ", deptId=" + deptId + ", createTime='" + createTime + '\'' + ", updateTime='" + updateTime + '\'' + ", dept=" + dept + ", company=" + company + '}' ; } public int getId () { return id; } public void setId (int id) { this .id = id; } public String getUsername () { return username; } public void setUsername (String username) { this .username = username; } public String getPassword () { return password; } public void setPassword (String password) { this .password = password; } public String getName () { return name; } public void setName (String name) { this .name = name; } public int getGender () { return gender; } public void setGender (int gender) { this .gender = gender; } public String getImage () { return image; } public void setImage (String image) { this .image = image; } public String getJob () { return job; } public void setJob (String job) { this .job = job; } public String getEntrydate () { return entrydate; } public void setEntrydate (String entrydate) { this .entrydate = entrydate; } public int getDeptId () { return deptId; } public void setDeptId (int deptId) { this .deptId = deptId; } public String getCreateTime () { return createTime; } public void setCreateTime (String createTime) { this .createTime = createTime; } public String getUpdateTime () { return updateTime; } public void setUpdateTime (String updateTime) { this .updateTime = updateTime; } }
创建mapper文件
1 2 3 4 5 @Mapper @Repository public interface EmpMapper { public List<Emp> selectAll () ; }
创建mapper配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 <?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.example.demo.mapper.EmpMapper" > <resultMap id ="All" type ="com.example.demo.entity.Emp" > <id column ="id" property ="id" > </id > <result column ="username" property ="username" > </result > <result column ="password" property ="password" > </result > <result column ="name" property ="name" > </result > <result column ="gender" property ="gender" > </result > <result column ="image" property ="image" > </result > <result column ="job" property ="job" > </result > <result column ="entrydate" property ="entrydate" > </result > <result column ="dept_id" property ="deptId" > </result > <result column ="create_time" property ="createTime" > </result > <result column ="update_time" property ="updateTime" > </result > <association property ="dept" javaType ="com.example.demo.entity.Dept" > <id column ="did" property ="id" > </id > <result column ="dname" property ="name" > </result > <result column ="dcreate_time" property ="createTime" > </result > <result column ="dupdate_time" property ="updateTime" > </result > </association > <association property ="company" javaType ="com.example.demo.entity.Company" > <id column ="cid" property ="id" > </id > <result column ="deptment" property ="deptment" > </result > </association > </resultMap > <select id ="selectAll" resultMap ="All" > select e.id,e.username,e.`password`,e.`name`,e.gender,e.image,e.job,e.entrydate,e.dept_id,e.update_time,d.id as did,d.`name` as dname,d.create_time as dcreate_time,d.update_time as dupdate_time,c.id as cid,c.deptment from emp e,dept d,company c where e.job = d.id and c.id = e.dept_id </select > </mapper >
Mybatis 一对多 创建实体类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 @Component public class Dept { private int id; private String name; private String createTime; private String updateTime; private List<Emp> emps; @Override public String toString () { return "Dept{" + "id=" + id + ", name='" + name + '\'' + ", createTime='" + createTime + '\'' + ", updateTime='" + updateTime + '\'' + ", emps=" + emps + '}' ; } public List<Emp> getEmps () { return emps; } public void setEmps (List<Emp> emps) { this .emps = emps; } public int getId () { return id; } public void setId (int id) { this .id = id; } public String getName () { return name; } public void setName (String name) { this .name = name; } public String getCreateTime () { return createTime; } public void setCreateTime (String createTime) { this .createTime = createTime; } public String getUpdateTime () { return updateTime; } public void setUpdateTime (String updateTime) { this .updateTime = updateTime; } }
创建mapper文件
1 2 3 4 5 @Mapper @Repository public interface DeptMapper { public List<Dept> selectAll () ; }
创建mapper配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <?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.example.demo.mapper.DeptMapper" > <resultMap id ="All" type ="com.example.demo.entity.Dept" > <id column ="id" property ="id" > </id > <result column ="name" property ="name" > </result > <result column ="create_time" property ="createTime" > </result > <result column ="update_time" property ="updateTime" > </result > <collection property ="emps" ofType ="com.example.demo.entity.Emp" > <id column ="eid" property ="id" > </id > <result column ="username" property ="username" > </result > <result column ="password" property ="password" > </result > <result column ="ename" property ="name" > </result > <result column ="gender" property ="gender" > </result > <result column ="image" property ="image" > </result > <result column ="job" property ="job" > </result > <result column ="entrydate" property ="entrydate" > </result > <result column ="dept_id" property ="deptId" > </result > <result column ="ecreate_time" property ="createTime" > </result > <result column ="eupdate_time" property ="updateTime" > </result > </collection > </resultMap > <select id ="selectAll" resultMap ="All" > select d.id,d.name,d.create_time,d.update_time,e.id as eid,e.username,e.`password`,e.`name` as ename,e.gender,e.image,e.job,e.entrydate,e.dept_id,e.create_time as ecreate_time,e.update_time as eupdate_time from dept d,emp e where d.id = e.dept_id </select > </mapper >
Mybatis-plus 导入依赖
1 2 3 4 5 <dependency > <groupId > com.baomidou</groupId > <artifactId > mybatis-plus-boot-starter</artifactId > <version > 3.4.2</version > </dependency >
创建接口
1 2 3 @Mapper public interface CompanyMapper extends BaseMapper <Company> {}
介绍BaseMapper接口
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public interface BaseMapper <T> extends Mapper <T> { int insert (T entity) ; int deleteById (Serializable id) ; int deleteByMap (@Param("cm") Map<String, Object> columnMap) ; int delete (@Param("ew") Wrapper<T> queryWrapper) ; int deleteBatchIds (@Param("coll") Collection<? extends Serializable> idList) ; int updateById (@Param("et") T entity) ; int update (@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper) ; T selectById (Serializable id) ; List<T> selectBatchIds (@Param("coll") Collection<? extends Serializable> idList) ; List<T> selectByMap (@Param("cm") Map<String, Object> columnMap) ; T selectOne (@Param("ew") Wrapper<T> queryWrapper) ; Integer selectCount (@Param("ew") Wrapper<T> queryWrapper) ; List<T> selectList (@Param("ew") Wrapper<T> queryWrapper) ; List<Map<String, Object>> selectMaps (@Param("ew") Wrapper<T> queryWrapper) ; List<Object> selectObjs (@Param("ew") Wrapper<T> queryWrapper) ; <E extends IPage <T>> E selectPage (E page, @Param("ew") Wrapper<T> queryWrapper) ; <E extends IPage <Map<String, Object>>> E selectMapsPage (E page, @Param("ew") Wrapper<T> queryWrapper) ; }
继承该接口可直接使用该接口里的方法