• MyBatis_动态代理


    一、项目结构

    二、代码实现

     1 import java.util.List;
     2 import java.util.Map;
     3 
     4 import com.jmu.bean.Student;
     5 
     6 public interface IStudentDao {
     7     void insertStudent(Student student);
     8     void insertStudentCacheId(Student student);// 插入后获取
     9     void deleteStudentById(int id);
    10     void updateStudent(Student student);
    11     List<Student> selectAllStudents();// 查询所有
    12     /* Map<String,Object> selectAllStudentsMap(); */
    13     Student selectStudentById(int id); // 根据id查询
    14     List<Student> selectStudentsByName(String name);// 模糊查询
    15 }
    com.jmu.dao.IStudentDao
     1 import java.util.List;
     2 import org.apache.ibatis.session.SqlSession;
     3 import org.apache.log4j.BasicConfigurator;
     4 import org.junit.After;
     5 import org.junit.Before;
     6 import org.junit.Test;
     7 
     8 import com.jmu.bean.Student;
     9 import com.jmu.dao.IStudentDao;
    10 import com.jmu.utils.MybatisUtils;
    11 
    12 public class MyTest {
    13     private IStudentDao dao;
    14     private SqlSession sqlSession;
    15 
    16     @Before
    17     public void Before() {
    18         sqlSession = MybatisUtils.getSqlSession();
    19         dao = sqlSession.getMapper(IStudentDao.class);
    20         BasicConfigurator.configure();
    21     }
    22   @After
    23   public void after(){
    24       if (sqlSession!=null) {
    25           sqlSession.commit();
    26         
    27     }
    28       
    29   }
    30     @Test
    31     public void test01() {
    32         Student student = new Student("明明", 19, 87.9);
    33         System.out.println("插入前:student=" + student);
    34         dao.insertStudent(student);
    35         System.out.println("插入后:student=" + student);
    36         sqlSession.commit();
    37     }
    38 
    39     // 插入后获取
    40     @Test
    41     public void test02() {
    42         Student student = new Student("明明", 23, 99.5);
    43         System.out.println("插入前:student=" + student);
    44         dao.insertStudentCacheId(student);
    45         System.out.println("插入后:student=" + student);
    46         sqlSession.commit();
    47     }
    48 
    49     @Test
    50     public void test03() {
    51         dao.deleteStudentById(25);
    52         sqlSession.commit();
    53     }
    54 
    55     @Test
    56     public void test04() {
    57         Student student = new Student("红酒", 23, 93.5);
    58         student.setId(28);
    59         dao.updateStudent(student);
    60         sqlSession.commit();
    61     }
    62 
    63     @Test
    64     public void test05() {
    65         List<Student> students = dao.selectAllStudents();
    66         for (Student student : students) {
    67             System.out.println(student);
    68         }
    69     }
    70 
    71     /*@Test
    72     public void test06() {
    73         Map<String, Object> map = dao.selectAllStudentsMap();
    74         System.out.println(map.get("王维"));
    75     }*/
    76 
    77     @Test
    78     public void test07() {
    79         Student student = dao.selectStudentById(154);
    80         System.out.println(student);
    81     }
    82 
    83     @Test
    84     public void test08() {
    85         List<Student> students = dao.selectStudentsByName("明");
    86         for (Student student : students) {
    87             System.out.println(student);
    88         }
    89 
    90     }
    91 
    92 }
    com.jmu.test.MyTest
     1 ### Global logging configuration
     2 log4j.logger.test=debug,console
     3 ##log4j.Logger.com.jmu.dao.IStudentDao=trace,console
     4 ### Uncomment for MyBatis logging
     5 log4j.logger.org.apache.ibatis=ERROR
     6 
     7 log4j.logger.org.apache.ibatis.session.AutoMappingUnknownColumnBehavior=WARN
     8 
     9 ### Console output...
    10 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    11 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    12 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
    13 
    14 log4j.appender.lastEventSavedAppender=org.apache.ibatis.session.AutoMappingUnknownColumnBehaviorTest$LastEventSavedAppender
    log4j.properties
     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 <mapper namespace="com.jmu.dao.IStudentDao">
     6     <insert id="insertStudent" parameterType="Student">
     7         insert into
     8         student(name,age,score) values(#{name},#{age},#{score})
     9     </insert>
    10 
    11     <insert id="insertStudentCacheId">
    12         insert into student(name,age,score) values(#{name},#{age},#{score})
    13         <selectKey resultType="int" keyProperty="id" order="AFTER">
    14             select
    15             @@identity
    16         </selectKey>
    17     </insert>
    18     <delete id="deleteStudentById">
    19         delete from student where id=#{XXX}<!--这里的#{} 仅仅是个占位符,里边放什么都行 -->
    20     </delete>
    21     <update id="updateStudent">
    22         update student set
    23         name=#{name},age=#{age},score=#{score} where id=#{id}
    24     </update>
    25     <select id="selectAllStudents" resultType="Student">
    26         select
    27         id,name,age,score from student
    28     </select>
    29     <select id="selectStudentById" resultType="Student">
    30         select
    31         id,name,age,score from student where id=#{JJJ}
    32     </select>
    33     <select id="selectStudentsByName" resultType="Student">
    34         <!-- select id,name,age,score from student where name like CONCAT('%',#{XXX},'%') -->
    35         <!-- select id,name,age,score from student where name like '%王二%' -->
    36         <!-- select id,name,age,score from student where name like '%${value}%'  --><!-- 不存在sql注入 风险,但是效率低 -->
    37         select id,name,age,score from student where name like '%' #{XXX} '%'<!--常用 -->
    38     </select>
    39 </mapper>
    /mybatis4-mapperDynamicProxy/src/com/jmu/dao/mapper.xml

    输出:

    插入前:student=Student [id=null, name=明明, score=87.9, age=19]
    0 [main] DEBUG com.jmu.dao.IStudentDao.insertStudent  - ==>  Preparing: insert into student(name,age,score) values(?,?,?) 
    56 [main] DEBUG com.jmu.dao.IStudentDao.insertStudent  - ==> Parameters: 明明(String), 19(Integer), 87.9(Double)
    57 [main] DEBUG com.jmu.dao.IStudentDao.insertStudent  - <==    Updates: 1
    插入后:student=Student [id=null, name=明明, score=87.9, age=19]
    插入前:student=Student [id=null, name=明明, score=99.5, age=23]
    82 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - ==>  Preparing: insert into student(name,age,score) values(?,?,?) 
    82 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - ==>  Preparing: insert into student(name,age,score) values(?,?,?) 
    83 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - ==> Parameters: 明明(String), 23(Integer), 99.5(Double)
    83 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - ==> Parameters: 明明(String), 23(Integer), 99.5(Double)
    85 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - <==    Updates: 1
    85 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId  - <==    Updates: 1
    88 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - ==>  Preparing: select @@identity 
    88 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - ==>  Preparing: select @@identity 
    88 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - ==> Parameters: 
    88 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - ==> Parameters: 
    126 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - <==      Total: 1
    126 [main] DEBUG com.jmu.dao.IStudentDao.insertStudentCacheId!selectKey  - <==      Total: 1
    插入后:student=Student [id=165, name=明明, score=99.5, age=23]
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==>  Preparing: delete from student where id=? 
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==>  Preparing: delete from student where id=? 
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==>  Preparing: delete from student where id=? 
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==> Parameters: 25(Integer)
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==> Parameters: 25(Integer)
    145 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - ==> Parameters: 25(Integer)
    146 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - <==    Updates: 0
    146 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - <==    Updates: 0
    146 [main] DEBUG com.jmu.dao.IStudentDao.deleteStudentById  - <==    Updates: 0
    162 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==>  Preparing: update student set name=?,age=?,score=? where id=? 
    162 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==>  Preparing: update student set name=?,age=?,score=? where id=? 
    162 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==>  Preparing: update student set name=?,age=?,score=? where id=? 
    162 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==>  Preparing: update student set name=?,age=?,score=? where id=? 
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==> Parameters: 红酒(String), 23(Integer), 93.5(Double), 28(Integer)
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==> Parameters: 红酒(String), 23(Integer), 93.5(Double), 28(Integer)
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==> Parameters: 红酒(String), 23(Integer), 93.5(Double), 28(Integer)
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - ==> Parameters: 红酒(String), 23(Integer), 93.5(Double), 28(Integer)
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - <==    Updates: 0
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - <==    Updates: 0
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - <==    Updates: 0
    163 [main] DEBUG com.jmu.dao.IStudentDao.updateStudent  - <==    Updates: 0
    181 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==>  Preparing: select id,name,age,score from student 
    181 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==>  Preparing: select id,name,age,score from student 
    181 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==>  Preparing: select id,name,age,score from student 
    181 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==>  Preparing: select id,name,age,score from student 
    181 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==>  Preparing: select id,name,age,score from student 
    182 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==> Parameters: 
    182 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==> Parameters: 
    182 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==> Parameters: 
    182 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==> Parameters: 
    182 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - ==> Parameters: 
    188 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - <==      Total: 8
    188 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - <==      Total: 8
    188 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - <==      Total: 8
    188 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - <==      Total: 8
    188 [main] DEBUG com.jmu.dao.IStudentDao.selectAllStudents  - <==      Total: 8
    Student [id=157, name=明明, score=87.9, age=19]
    Student [id=158, name=明明, score=87.9, age=19]
    Student [id=159, name=明明, score=87.9, age=19]
    Student [id=160, name=明明, score=87.9, age=19]
    Student [id=162, name=明明, score=87.9, age=19]
    Student [id=163, name=明明, score=99.5, age=23]
    Student [id=164, name=明明, score=87.9, age=19]
    Student [id=165, name=明明, score=99.5, age=23]
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    206 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==>  Preparing: select id,name,age,score from student where id=? 
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    207 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - ==> Parameters: 157(Integer)
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    211 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentById  - <==      Total: 1
    Student [id=157, name=明明, score=87.9, age=19]
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    247 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==>  Preparing: select id,name,age,score from student where name like '%' ? '%' 
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    253 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - ==> Parameters: 明(String)
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    262 [main] DEBUG com.jmu.dao.IStudentDao.selectStudentsByName  - <==      Total: 8
    Student [id=157, name=明明, score=87.9, age=19]
    Student [id=158, name=明明, score=87.9, age=19]
    Student [id=159, name=明明, score=87.9, age=19]
    Student [id=160, name=明明, score=87.9, age=19]
    Student [id=162, name=明明, score=87.9, age=19]
    Student [id=163, name=明明, score=99.5, age=23]
    Student [id=164, name=明明, score=87.9, age=19]
    Student [id=165, name=明明, score=99.5, age=23]
    output
  • 相关阅读:
    [Java Spring] Convertors
    [Java Spring] @InitBinder
    [Java Spring] Validations for Entity
    [Java JPA] @Query
    测试人员为什么要深入到项目实现中去
    有赞的深度需求功能测试
    youtube-dl 使用
    mysql update 的时候使用left join和where语句
    openstack 虚拟机设备管理器cpu核数与任务管理器不一致
    tcp扫描器实现原理
  • 原文地址:https://www.cnblogs.com/hoje/p/8087833.html
Copyright © 2020-2023  润新知