经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
mybatis学习使用2简单增删改查
来源:cnblogs  作者:海之浪子  时间:2018/10/21 20:30:23  对本文有异议

mybatis的增删改查代码如下demo:

  1. User.java
  1. package com.rookie.bigdata.domain;
  2. import lombok.Data;
  3. import java.io.Serializable;
  4. /**
  5. * @author
  6. * @date 2018/10/21
  7. */
  8. //Data注解可以省略get和set方法
  9. @Data
  10. public class User implements Serializable{
  11. // 用户标识
  12. private Integer id;
  13. // 用户姓名
  14. private String name;
  15. // 用户性别
  16. private String sex;
  17. // 用户年龄
  18. private Integer age;
  19. // 无参数构造器
  20. public User() {
  21. super();
  22. }
  23. // 有参数构造器
  24. public User( String name, String sex, Integer age) {
  25. super();
  26. this.name = name;
  27. this.sex = sex;
  28. this.age = age;
  29. }
  30. }
View Code

 

UserMapper.java

  1. package com.rookie.bigdata.mapper;
  2. import com.rookie.bigdata.domain.User;
  3. /**
  4. * @author
  5. * @date 2018/10/21
  6. */
  7. public interface UserMapper {
  8. void save(User user);
  9. void saveUser(User user);
  10. User selectUser(Integer id);
  11. void updateUser(User user);
  12. void deleteUser(Integer id);
  13. }

 

UserMapper.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="com.rookie.bigdata.mapper.UserMapper">
  6.  
  7.  
  8. <insert id="save" parameterType="com.rookie.bigdata.domain.User" useGeneratedKeys="true">
  9. INSERT INTO BS_USER(name,sex,age)
  10. VALUES(#{name},#{sex},#{age})
  11. </insert>
  12.  
  13. <!--
  14. parameterType="user"表示该插入语句需要一个user对象作为参数
  15. useGeneratedKeys="true"表示使用自动增长的主键,即使用JDBC的getGeeratedKeys方法获取由数据库生疮内部生成的主键,默认为false
  16. keyProperty唯一标记的一个属性,mybatis会通过getGerneratedKeys的返回值设置它的键值-->
  17. <insert id="saveUser" parameterType="com.rookie.bigdata.domain.User"
  18. useGeneratedKeys="true" keyProperty="id">
  19. INSERT INTO BS_USER(name,sex,age)
  20. VALUES(#{name},#{sex},#{age})
  21. </insert>
  22.  
  23. <!-- select操作
  24. parameterType="int"表示该查询语句需要一个int类型的参数
  25. resultType="com.rookie.bigdata.domain.User"表示返回的是一个user对象 -->
  26. <select id="selectUser" parameterType="int" resultType="com.rookie.bigdata.domain.User">
  27. SELECT * FROM BS_USER WHERE id = #{id}
  28. </select>
  29.  
  30. <!-- update操作
  31. parameterType="com.rookie.bigdata.domain.User"表示该更新语句需要一个user对象作为参数-->
  32. <update id="updateUser" parameterType="com.rookie.bigdata.domain.User">
  33. UPDATE BS_USER
  34. SET name = #{name},sex = #{sex},age = #{age}
  35. WHERE id = #{id}
  36. </update>
  37.  
  38. <!-- delete操作 parameterType="int"表示该查询语句需要一个int类型的参数-->
  39. <delete id="deleteUser" parameterType="int">
  40. DELETE FROM BS_USER WHERE id = #{id}
  41. </delete>
  42.  
  43. </mapper>

 

mybatis-config.xml

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE configuration
  3. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <!-- XML 配置文件包含对 MyBatis 系统的核心设置 -->
  6. <configuration>
  7.  
  8. <!-- <typeAliases>
  9. <typeAlias alias="user" type="com.rookie.bigdata.domain.User"/>
  10. </typeAliases>-->
  11. <environments default="mysql">
  12. <!-- 环境配置,即连接的数据库。 -->
  13. <environment id="mysql">
  14. <!-- 指定事务管理类型,type="JDBC"指直接简单使用了JDBC的提交和回滚设置 -->
  15. <transactionManager type="JDBC"/>
  16. <!-- dataSource指数据源配置,POOLED是JDBC连接对象的数据源连接池的实现。 -->
  17. <dataSource type="POOLED">
  18. <property name="driver" value="com.mysql.jdbc.Driver"/>
  19. <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis"/>
  20. <property name="username" value="root"/>
  21. <property name="password" value="root"/>
  22. </dataSource>
  23. </environment>
  24. </environments>
  25. <!-- mappers告诉了MyBatis去哪里找持久化类的映射文件 -->
  26. <mappers>
  27. <mapper resource="mapper/UserMapper.xml"/>
  28. </mappers>
  29. </configuration>

 

测试代码UserMapperTest.java

  1. package com.rookie.bigdata.mapper;
  2. import com.rookie.bigdata.domain.User;
  3. import org.apache.ibatis.annotations.Mapper;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Before;
  9. import org.junit.Test;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. /**
  13. * @author
  14. * @date 2018/10/21
  15. */
  16. public class UserMapperTest {
  17. public SqlSession session;
  18. @Before
  19. public void before() throws IOException {
  20. // 读取mybatis-config.xml文件
  21. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  22. // 初始化mybatis,创建SqlSessionFactory类的实例
  23. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
  24. .build(inputStream);
  25. // 创建Session实例
  26. session = sqlSessionFactory.openSession();
  27. }
  28. @Test
  29. public void saveUser() throws Exception {
  30. UserMapper mapper = session.getMapper(UserMapper.class);
  31. mapper.saveUser(new User("zhangsan","男",23));
  32. session.commit();
  33. // 关闭Session
  34. session.close();
  35. }
  36. @Test
  37. public void selectUser() throws Exception {
  38. UserMapper mapper = session.getMapper(UserMapper.class);
  39. User user = mapper.selectUser(5);
  40. // 提交事务
  41. session.commit();
  42. // 关闭Session
  43. session.close();
  44. System.out.println(user);
  45. }
  46. @Test
  47. public void updateUser() throws Exception {
  48. UserMapper mapper = session.getMapper(UserMapper.class);
  49. User user = mapper.selectUser(5);
  50. user.setAge(21);
  51. mapper.updateUser(user);
  52. // 提交事务
  53. session.commit();
  54. // 关闭Session
  55. session.close();
  56. System.out.println(user);
  57. }
  58. @Test
  59. public void deleteUser() throws Exception {
  60. UserMapper mapper = session.getMapper(UserMapper.class);
  61. mapper.deleteUser(5);
  62. session.commit();
  63. // 关闭Session
  64. session.close();
  65. }
  66. }

 

关联查询的代码如下:

Staff.java

  1. package com.rookie.bigdata.domain;
  2. import lombok.Data;
  3. /**
  4. * @author
  5. * @date 2018/10/21
  6. */
  7. @Data
  8. public class Staff {
  9. private Integer id;
  10. private String name;
  11. private String sex;
  12. private Integer age;
  13. private Department department;
  14. }
View Code

 

Department.java

  1. package com.rookie.bigdata.domain;
  2. import lombok.Data;
  3. import java.util.List;
  4. /**
  5. * @author liuxili
  6. * @date 2018/10/21
  7. */
  8. @Data
  9. public class Department {
  10. private Integer id;
  11. private String code;
  12. private List<Staff> staffs;
  13. }
View Code

 

CompanyMapper.java

  1. package com.rookie.bigdata.mapper;
  2. import com.rookie.bigdata.domain.Department;
  3. import com.rookie.bigdata.domain.Staff;
  4. import java.util.List;
  5. /**
  6. * @author
  7. * @date 2018/10/21
  8. */
  9. public interface CompanyMapper {
  10. List<Staff> selectStaff();
  11. List<Department> selectDepartment();
  12. }

 

CompanyMapper.java

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  4.  
  5. <mapper namespace="com.rookie.bigdata.mapper.CompanyMapper">
  6.  
  7. <!--职工映射对象-->
  8. <resultMap id="staffResultMap" type="com.rookie.bigdata.domain.Staff">
  9. <id property="id" column="id"/>
  10. <result property="name" column="name"/>
  11. <result property="sex" column="sex"/>
  12. <result property="age" column="age"/>
  13. <!--进行关联映射-->
  14. <association property="department" column="depart_id" javaType="com.rookie.bigdata.domain.Department"
  15. select="selectID"/>
  16. </resultMap>
  17. <!--根据ID查询相关部门-->
  18. <select id="selectID" resultType="com.rookie.bigdata.domain.Department">
  19. select * from bs_department WHERE id=#{id};
  20. </select>
  21.  
  22. <select id="selectStaff" resultMap="staffResultMap">
  23. SELECT * FROM bs_staff;
  24. </select>
  25.  
  26. <resultMap id="departResultMap" type="com.rookie.bigdata.domain.Department">
  27. <id property="id" column="id"/>
  28. <result property="code" column="code"/>
        <!--javaType:属性对应的类型
          ofType:表示集合当中的类型-->
  29. <collection property="staffs" javaType="ArrayList" column="id" ofType="com.rookie.bigdata.domain.Staff"
  30. select="selectStaffByID"/>
  31. </resultMap>
  32. <select id="selectStaffByID" resultType="com.rookie.bigdata.domain.Staff">
  33. SELECT * FROM bs_staff WHERE depart_id=#{id}
  34. </select>
  35. <select id="selectDepartment" resultMap="departResultMap">
  36. select * from bs_department;
  37. </select>
  38. </mapper>

 

测试代码CompanyMapperTest.java

  1. package com.rookie.bigdata.mapper;
  2. import com.rookie.bigdata.domain.Department;
  3. import com.rookie.bigdata.domain.Staff;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  8. import org.junit.Before;
  9. import org.junit.Test;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.util.List;
  13. import static org.junit.Assert.*;
  14. /**
  15. * @author
  16. * @date 2018/10/21
  17. */
  18. public class CompanyMapperTest {
  19. public SqlSession session;
  20. @Before
  21. public void before() throws IOException {
  22. // 读取mybatis-config.xml文件
  23. InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
  24. // 初始化mybatis,创建SqlSessionFactory类的实例
  25. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
  26. .build(inputStream);
  27. // 创建Session实例
  28. session = sqlSessionFactory.openSession();
  29. }
  30. @Test
  31. public void selectStaff() throws Exception {
  32. CompanyMapper mapper = session.getMapper(CompanyMapper.class);
  33. List<Staff> staff = mapper.selectStaff();
  34. for (Staff staff1 : staff) {
  35. System.out.println(staff1);
  36. }
  37. session.commit();
  38. session.close();
  39. }
  40. @Test
  41. public void selectDepartment(){
  42. CompanyMapper mapper = session.getMapper(CompanyMapper.class);
  43. List<Department> departments = mapper.selectDepartment();
  44. for (Department department : departments) {
  45. List<Staff> staffs = department.getStaffs();
  46. for (Staff staff : staffs) {
  47. System.out.println(department);
  48. System.out.println(staff);
  49. }
  50. }
  51. }
  52. }

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号