1. * 使用mybatis举例,使用DAO接口方式实现
    * 不需要针对接口去编写具体的实现类代码,编写映射XML文件,直接拿来使用即可。
    * 1、导入jar包:mybatismysql-connector
    * 2mybatis配置文件:mybatis-config.xml,加载映射XML文件
    * 3、编写JavaBean类,如UserBean
    * 4、编写DAO接口和映射XML文件(namespace=DAO接口文件路径、id=接口方法名)
  2.  
  3. mybatis-config-dao.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. <configuration>
  6. <!--从外部配置文件导入jdbc信息-->
  7. <properties resource="jdbc.properties"></properties>
  8.  
  9. <environments default="development">
  10. <environment id="development">
  11. <transactionManager type="JDBC"/>
  12. <dataSource type="POOLED">
  13. <property name="driver" value="${driver}"/>
  14. <property name="url" value="${url}"/>
  15. <property name="username" value="${username}"/>
  16. <property name="password" value="${password}"/>
  17. </dataSource>
  18. </environment>
  19. </environments>
  20.  
  21. <!--指定映射资源文件-->
  22. <mappers>
  23. <mapper resource="dao/DaoMapper.xml"/>
  24.  
  25. </mappers>
  26. </configuration>
  1. DaoMapper.xml
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper
  3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5.  
  6. <mapper namespace="dao.UserDao">
  7. <!--id:名称; parameterType传入参数类型; resultType:返回数据类型-->
  8. <select id="selectOneUser" parameterType="int" resultType="bean.User">
  9. select * from user where id = #{id}
  10. </select>
  11.  
  12. <!--批量查询-->
  13. <select id="selectAllUser" resultMap="userList">
  14. select * from user
  15. </select>
  16. <resultMap type="bean.User" id="userList">
  17. <result property="id" column="id"/>
  18. <result property="name" column="name"/>
  19. <result property="age" column="age"/>
  20. </resultMap>
  21.  
  22. <insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
  23. insert into user (id, name, age) values (#{id} ,#{name}, #{age})
  24. </insert>
  25.  
  26. <update id="updateUser">
  27. update user set name=#{name},age=#{age} where id=#{id}
  28. </update>
  29.  
  30. <delete id="deleteUser">
  31. delete from user where id=#{id}
  32. </delete>
  33.  
  34. <!-- 传入多个参数时,自动转换为map形式 -->
  35. <insert id="insertByColumns" useGeneratedKeys="true" keyProperty="id">
  36. insert into user (id, name, age) values (NULL ,#{param1}, #{param2})
  37. </insert>
  38. <insert id="insertByZhuJie" useGeneratedKeys="true" keyProperty="id">
  39. insert into user (id, name, age) values (NULL ,#{name}, #{age})
  40. </insert>
  41. <insert id="insertByMap" useGeneratedKeys="true" keyProperty="id">
  42. insert into user (id, name, age) values (NULL ,#{name}, #{age})
  43. </insert>
  44.  
  45. </mapper>
  1. UserDao.java
  1. package dao;
  2.  
  3. import bean.User;
  4. import org.apache.ibatis.annotations.Param;
  5.  
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. /*
  10. * 使用mybatis举例,使用DAO接口方式实现
  11. * 不需要针对UserMapperI接口去编写具体的实现类代码,这个具体的实现类由MyBatis帮我们动态构建出来,我们只需要直接拿来使用即可。
  12. * */
  13. public interface UserDao {
  14.  
  15. // 根据id查询单一数据
  16. public User selectOneUser(int id);
  17.  
  18. // 查询所有用户
  19. public List<User> selectAllUser();
  20.  
  21. // 插入数据
  22. public int insertUser(User user);
  23.  
  24. // 修改用户
  25. public int updateUser(User user);
  26.  
  27. // 删除用户
  28. public int deleteUser(User user);
  29.  
  30. // 插入数据;多参数三种方式:默认Map、使用Map传参和使用注解别名
  31. public int insertByColumns(String name, int age);
  32. public int insertByZhuJie(@Param("name") String name, @Param("age") int age);
  33. public int insertByMap(Map map);
  34.  
  35. }
  1. TestDao.java
  1. package dao;
  2.  
  3. import bean.User;
  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.After;
  9. import org.junit.Before;
  10. import org.junit.Ignore;
  11. import org.junit.Test;
  12.  
  13. import java.io.IOException;
  14. import java.io.InputStream;
  15. import java.util.HashMap;
  16. import java.util.List;
  17. import java.util.Map;
  18.  
  19. /*
  20. * 使用mybatis举例,使用DAO接口方式实现
  21. * 不需要针对接口去编写具体的实现类代码,编写映射XML文件,直接拿来使用即可。
  22. * 1、导入jar包:mybatis和mysql-connector
  23. * 2、mybatis配置文件:mybatis-config.xml,加载映射XML文件
  24. * 3、编写JavaBean类,如UserBean
  25. * 4、编写DAO接口和映射XML文件(namespace=DAO接口文件路径、id=接口方法名)
  26. * */
  27. public class TestDao {
  28. String resource = "mybatis-config-dao.xml";
  29. SqlSessionFactory sqlSessionFactory = null;
  30. SqlSession session = null;
  31.  
  32. @Before
  33. public void before() {
  34. // System.out.println("Before");
  35. try {
  36. InputStream inputStream = Resources.getResourceAsStream(resource);
  37. // 创建工厂
  38. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  39. // 创建session对象
  40. session = sqlSessionFactory.openSession();
  41.  
  42. } catch (IOException e) {
  43. e.printStackTrace();
  44. }
  45. }
  46.  
  47. @After
  48. public void close() {
  49. session.close();
  50. // System.out.println("After");
  51. }
  52.  
  53. @Test
  54. public void testSelectOneUser() {
  55. // 接口自动实例化
  56. UserDao userDao = session.getMapper(UserDao.class);
  57. // 执行sql
  58. User user = userDao.selectOneUser(1);
  59. System.out.println(user);
  60. }
  61.  
  62. // 批量查询
  63. @Test
  64. public void testSelectAllUser() {
  65. // 接口自动实例化
  66. UserDao userDao = session.getMapper(UserDao.class);
  67. // 执行sql
  68. List<User> listUser = userDao.selectAllUser();
  69. System.out.println("记录个数:" + listUser.size());
  70. System.out.println(listUser);
  71. }
  72.  
  73. // 插入数据
  74. @Ignore
  75. @Test
  76. public void testInsertUser() {
  77. UserDao userDao = session.getMapper(UserDao.class);
  78. User user = new User("AA", "29");
  79. int n = userDao.insertUser(user);
  80. session.commit();
  81. System.out.println("插入数据:" + user);
  82. System.out.println(n);
  83. }
  84.  
  85. // 修改数据
  86. @Ignore
  87. @Test
  88. public void testUpdateUser() {
  89. UserDao userDao = session.getMapper(UserDao.class);
  90. User user = new User(2, "Tom5", "29");
  91. int n = userDao.updateUser(user);
  92. session.commit();
  93. System.out.println("修改数据:" + user);
  94. System.out.println(n);
  95. }
  96.  
  97. // 修改数据
  98. @Ignore
  99. @Test
  100. public void testDeleteUser() {
  101. UserDao userDao = session.getMapper(UserDao.class);
  102. User user = new User(13, "XX", "XX");
  103. int n = userDao.deleteUser(user);
  104. session.commit();
  105. System.out.println("删除数据:" + user);
  106. System.out.println(n);
  107. }
  108.  
  109. // 多参数插入数据的三种方式
  110. @Ignore
  111. @Test
  112. public void testInsertByColumns() {
  113. UserDao userDao = session.getMapper(UserDao.class);
  114. String name = "insertByColumns";
  115. int age = 33;
  116. // int n = userDao.insertByColumns(name, age);
  117. // int n = userDao.insertByZhuJie(name, age);
  118.  
  119. Map map = new HashMap();
  120. map.put("name", name);
  121. map.put("age", age);
  122. int n = userDao.insertByMap(map);
  123.  
  124. session.commit();
  125. System.out.println("插入数据name:" + name);
  126. System.out.println(n);
  127. }
  128.  
  129. }
  1. User.java
  1. package bean;
  2.  
  3. /**
  4. * 数据封装类
  5. * JavaBean
  6. */
  7. public class User {
  8. private int id;
  9. private String name;
  10. private String age;
  11.  
  12. public User() {
  13.  
  14. }
  15.  
  16. public User(String name, String age) {
  17. this.name = name;
  18. this.age = age;
  19. }
  20. public User(int id, String name, String age) {
  21. this.id = id;
  22. this.name = name;
  23. this.age = age;
  24. }
  25.  
  26. public String getName() {
  27. return name;
  28. }
  29.  
  30. public void setName(String name) {
  31. this.name = name;
  32. }
  33.  
  34. public String getAge() {
  35. return age;
  36. }
  37.  
  38. public void setAge(String age) {
  39. this.age = age;
  40. }
  41.  
  42. public int getId() {
  43. return id;
  44. }
  45.  
  46. public void setId(int id) {
  47. this.id = id;
  48. }
  49.  
  50. @Override
  51. public String toString() {
  52. return "User{id:" + id + "; 姓名:" + name + "; 年龄:" + age + "}";
  53. }
  54. }

mybatis之DAO层自动实现接口的更多相关文章

  1. idea 中dao层自动生成接口

    1.在生成接口的类上右键 2.选中要生成的接口方法 3.点击Yes 4.出现(? reference in ? file)即生成成功

  2. [MyBatis]DAO层只写接口,不用写实现类

    团队开发一个项目,由老大架了一个框架,遇到了DAO层不用写接口了,我也是用了2次才记住这个事的,因为自己一直都是习惯于写DAO层的实现类,所以,习惯性的还是写了个实现类.于是遇到错误了. 找不到那个方 ...

  3. Mybatis的dao层实现 接口代理方式实现规范+plugins-PageHelper

    Mybatis的dao层实现 接口代理方式实现规范 Mapper接口实现时的相关规范: Mapper接口开发只需要程序员编写Mapper接口而不用具体实现其代码(相当于我们写的Imp实现类) Mapp ...

  4. 基于Mybatis的Dao层的开发

    基于Mybatis的Dao层开发 SqlSessionFactoryBuilder用于创建SqlSessionFacoty,SqlSessionFacoty一旦创建完成就不需要SqlSessionFa ...

  5. MyBatis开发Dao层的两种方式(原始Dao层开发)

    本文将介绍使用框架mybatis开发原始Dao层来对一个对数据库进行增删改查的案例. Mapper动态代理开发Dao层请阅读我的下一篇博客:MyBatis开发Dao层的两种方式(Mapper动态代理方 ...

  6. MyBatis开发Dao层的两种方式(Mapper动态代理方式)

    MyBatis开发原始Dao层请阅读我的上一篇博客:MyBatis开发Dao层的两种方式(原始Dao层开发) 接上一篇博客继续介绍MyBatis开发Dao层的第二种方式:Mapper动态代理方式 Ma ...

  7. 基于Mybatis的Dao层开发

    转自:https://www.cnblogs.com/rodge-run/p/6528398.html 基于Mybatis的Dao层开发 SqlSessionFactoryBuilder用于创建 Sq ...

  8. Mybatis的Dao层实现原理

    1.Mybatis的Dao层实现 1.1 传统开发方式 1.1.1编写UserDao接口 public interface UserDao { List<User> findAll() t ...

  9. IDEA项目搭建四——使用Mybatis实现Dao层

    一.引入mybatis及mysql的jar包 可以从阿里云上面查找版本,db操作放在dao层所以打开该层的pom.xml文件,找到<dependencies>节点增加两个引入 <de ...

随机推荐

  1. leetcode88—Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: T ...

  2. ssh访问服务器端visdom

    在服务器端启动visdompython -m visdom.server在windows端,将服务器的8097端口重定向到windows端(做了映射绑定):ssh -L 8097:127.0.0.1: ...

  3. JS设置cookie、读取cookie、删除cookie(转载)

    JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的.而cookie是运行在客户端的,所以可以用JS来设置cookie.假设有这样一种情 ...

  4. 20155308『网络对抗技术』Exp5 MSF基础应用

    20155308『网络对抗技术』Exp5 MSF基础应用 一.原理与实践说明 实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实 ...

  5. 20155320 Exp3 免杀原理与实践

    20155320 Exp3 免杀原理与实践 免杀 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. [基础问题回答] (1)杀软是如何检测出恶意代码的? 1.通过行为检 ...

  6. 2017-2018-1 20155320 嵌入式C语言——时钟

    2017-2018-1 20155320 嵌入式C语言--时钟 要求: 在作业本上完成附图作业,要认真看题目要求. 提交作业截图 作弊本学期成绩清零(有雷同的,不管是给别人传答案,还是找别人要答案都清 ...

  7. 20155321 《网络攻防》 Exp7 网络欺诈防范

    20155321 <网络攻防> Exp7 网络欺诈防范 实验内容 简单应用SET工具建立冒名网站 因为钓鱼网站是在本机的http服务下使用,因此需要将SET工具的访问端口改为http默认的 ...

  8. 全虚拟化和半虚拟化的区别 cpu的ring0 ring1又是什么概念? - 转

    http://www.cnblogs.com/xusongwei/archive/2012/07/30/2615592.html ring0是指CPU的运行级别,ring0是最高级别,ring1次之, ...

  9. Jlink使用技巧系列教程索引

    近两个月,写写停停,总算完成了这个系列的教程,不容易啊! Jlink使用技巧系列文章: 以下是各文章的链接,直接点击即可进入阅读. Jlink使用技巧之合并烧写文件 Jlink使用技巧之烧写SPI F ...

  10. python中获取执行脚本路径方法

    1.sys.path[0]:获取执行脚本目录绝对路径 #每次执行脚本时,python会将执行脚本目录加入PYTHONPATH环境变量中(sys.path获取) #!/usr/bin/python3 i ...