• mybatis之注解式开发


    注解

    • 注解是用于描述代码的代码。例如:@Test(用于描述方法进行junit测试),@Override(用于描述方法的重写),@Param(用于描述属性的名称)
    • 注解的使用风格:@xxx(属性),使用前必须进行导包
    • 使用注解一般用于简化配置文件,但是注解有时候也不是很友好(有时候反而更麻烦),例如动态sql
    • 关于注解的属性

    属性的设定方式是:属性名=属性值

    • 关于属性的类型
    1. 基本类型和String,可以直接使用双引号的形式
    2. 数组类型,name={值1,值2,......}如果数组元素只有一个,可以省略大括号。
    3. 对象类型,name=@对象名(属性)
    4. 如果属性是该注解的默认注解,而且该注解只配置这一个属性,key将属性名省略。

    mybatis注解之CURD代码如下

     1 package com.bjsxt.mapper;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.annotations.Delete;
     6 import org.apache.ibatis.annotations.Insert;
     7 import org.apache.ibatis.annotations.Select;
     8 import org.apache.ibatis.annotations.Update;
     9 
    10 import com.bjsxt.pojo.Student;
    11 
    12 public interface StudentMapper {
    13 
    14     @Select("select * from t_student")
    15     List<Student> selAll();
    16     
    17     @Insert("insert into t_student values (default, #{name}, #{age}, #{gender}, #{cid})")
    18     int insStu(Student student);
    19     
    20     @Update("update t_student set age=#{1} where id=#{0}")
    21     int updStu(int id, int age);
    22     
    23     @Delete("delete from t_student where id=#{0}")
    24     int delStu(int id);
    25 }
      1 package com.bjsxt.pojo;
      2 
      3 import java.io.Serializable;
      4 
      5 public class Student implements Serializable {
      6 
      7     private int id;
      8     private String name;
      9     private int age;
     10     private String gender;
     11     private int cid;
     12 
     13     public Student() {
     14         super();
     15     }
     16 
     17     public int getId() {
     18         return id;
     19     }
     20 
     21     public void setId(int id) {
     22         this.id = id;
     23     }
     24 
     25     public String getName() {
     26         return name;
     27     }
     28 
     29     public void setName(String name) {
     30         this.name = name;
     31     }
     32 
     33     public int getAge() {
     34         return age;
     35     }
     36 
     37     public void setAge(int age) {
     38         this.age = age;
     39     }
     40 
     41     public String getGender() {
     42         return gender;
     43     }
     44 
     45     public void setGender(String gender) {
     46         this.gender = gender;
     47     }
     48 
     49     public int getCid() {
     50         return cid;
     51     }
     52 
     53     public void setCid(int cid) {
     54         this.cid = cid;
     55     }
     56 
     57     @Override
     58     public int hashCode() {
     59         final int prime = 31;
     60         int result = 1;
     61         result = prime * result + age;
     62         result = prime * result + cid;
     63         result = prime * result + ((gender == null) ? 0 : gender.hashCode());
     64         result = prime * result + id;
     65         result = prime * result + ((name == null) ? 0 : name.hashCode());
     66         return result;
     67     }
     68 
     69     @Override
     70     public boolean equals(Object obj) {
     71         if (this == obj)
     72             return true;
     73         if (obj == null)
     74             return false;
     75         if (getClass() != obj.getClass())
     76             return false;
     77         Student other = (Student) obj;
     78         if (age != other.age)
     79             return false;
     80         if (cid != other.cid)
     81             return false;
     82         if (gender == null) {
     83             if (other.gender != null)
     84                 return false;
     85         } else if (!gender.equals(other.gender))
     86             return false;
     87         if (id != other.id)
     88             return false;
     89         if (name == null) {
     90             if (other.name != null)
     91                 return false;
     92         } else if (!name.equals(other.name))
     93             return false;
     94         return true;
     95     }
     96 
     97     @Override
     98     public String toString() {
     99         return "Student [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", cid=" + cid + "]";
    100     }
    101 }
     1 package com.bjsxt.test;
     2 
     3 import java.util.List;
     4 
     5 import org.apache.ibatis.session.SqlSession;
     6 import org.junit.Test;
     7 
     8 import com.bjsxt.mapper.StudentMapper;
     9 import com.bjsxt.pojo.Student;
    10 import com.bjsxt.util.MyBatisUtil;
    11 
    12 public class TestStu {
    13 
    14     @Test
    15     public void testSel() {
    16         SqlSession session = MyBatisUtil.getSession();
    17         
    18         StudentMapper mapper = session.getMapper(StudentMapper.class);
    19         
    20         List<Student> list = mapper.selAll();
    21         for (Student student : list) {
    22             System.out.println(student);
    23         }
    24         
    25         session.close();
    26     }
    27     @Test
    28     public void testIns() {
    29         SqlSession session = MyBatisUtil.getSession();
    30         
    31         StudentMapper mapper = session.getMapper(StudentMapper.class);
    32         
    33         Student student = new Student();
    34         student.setName("小王");
    35         student.setAge(20);
    36         student.setGender("女");
    37         student.setCid(2);
    38         
    39         int num = mapper.insStu(student);
    40         if(num > 0) {
    41             System.out.println("ok");
    42             session.commit();
    43         } else {
    44             session.rollback();
    45         }
    46         
    47         session.close();
    48     }
    49     @Test
    50     public void testUpd() {
    51         SqlSession session = MyBatisUtil.getSession();
    52         
    53         StudentMapper mapper = session.getMapper(StudentMapper.class);
    54         
    55         int num = mapper.updStu(6, 30);
    56         if(num > 0) {
    57             System.out.println("ok");
    58             session.commit();
    59         } else {
    60             session.rollback();
    61         }
    62         
    63         session.close();
    64     }
    65     @Test
    66     public void testDel() {
    67         SqlSession session = MyBatisUtil.getSession();
    68         
    69         StudentMapper mapper = session.getMapper(StudentMapper.class);
    70         
    71         int num = mapper.delStu(6);
    72         if(num > 0) {
    73             System.out.println("ok");
    74             session.commit();
    75         } else {
    76             session.rollback();
    77         }
    78         
    79         session.close();
    80     }
    81 }
     1 package com.bjsxt.util;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 
     6 import org.apache.ibatis.io.Resources;
     7 import org.apache.ibatis.session.SqlSession;
     8 import org.apache.ibatis.session.SqlSessionFactory;
     9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    10 
    11 public class MyBatisUtil {
    12 
    13     private static SqlSessionFactory factory = null;
    14 
    15     static {
    16         try {
    17             InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
    18             factory = new SqlSessionFactoryBuilder().build(is);
    19         } catch (IOException e) {
    20             e.printStackTrace();
    21         }
    22     }
    23 
    24     public static SqlSession getSession() {
    25         SqlSession session = null;
    26         if (factory != null) {
    27             // true表示开启自动提交
    28             // session = factory.openSession(true);
    29             session = factory.openSession();
    30         }
    31         return session;
    32     }
    33 }
    1 jdbc.driver=com.mysql.jdbc.Driver
    2 jdbc.url=jdbc:mysql://localhost:3306/java505
    3 jdbc.username=root
    4 jdbc.password=root
     1 # Set root category priority to INFO and its only appender to CONSOLE.
     2 log4j.rootCategory=ERROR, CONSOLE
     3 # log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
     4 
     5 # 单独设置SQL语句的输出级别为DEBUG级别
     6 log4j.logger.com.bjsxt.mapper=DEBUG
     7 
     8 # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
     9 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    10 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    11 log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
    12 
    13 # LOGFILE is set to be a File appender using a PatternLayout.
    14 log4j.appender.LOGFILE=org.apache.log4j.FileAppender
    15 log4j.appender.LOGFILE.File=d:/test.log
    16 log4j.appender.LOGFILE.Append=true
    17 log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
    18 log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n
     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     <!-- properties加载外部文件 -->
     7     <properties resource="db.properties" />
     8     <!-- settings标签 -->
     9     <settings>
    10         <!-- 设置MyBatis使用log4j日志支持 -->
    11         <setting name="logImpl" value="LOG4J"/>
    12     </settings>
    13     <!-- typeAliases给类型起别名 -->
    14     <typeAliases>
    15         <package name="com.bjsxt.pojo" />
    16     </typeAliases>
    17     <environments default="dev">
    18         <environment id="dev">
    19             <transactionManager type="JDBC" />
    20             <dataSource type="POOLED">
    21                 <property name="driver" value="${jdbc.driver}"/>
    22                 <property name="url" value="${jdbc.url}"/>
    23                 <property name="username" value="${jdbc.username}"/>
    24                 <property name="password" value="${jdbc.password}"/>
    25             </dataSource>
    26         </environment>
    27     </environments>
    28     <mappers>
    29         <package name="com.bjsxt.mapper" />
    30     </mappers>
    31 </configuration>
  • 相关阅读:
    关于报错”已有打开的于此Command相关联的DataReader,必须首先将它关闭。“的问题
    Dockerjenkins环境搭建跟配置
    Python+selenium 【第十章】封装config类,读取配置文件,封装驱动类,适配windows/mac
    —— “欢迎来到我的小屋”
    Python+selenium 【第九章】封装excel类,封装test_data类 读取测试元素信息
    Linux搭建docker
    Python+selenium 【第十二章】封装日志类优化其他方法并添加日志(异常处理)
    【selenium】Python自动化面试题
    Dockerjenkins容器安装python并配置环境变量
    【优化框架】新增期望结果,断言为mysql情况下动态化参数替换
  • 原文地址:https://www.cnblogs.com/wq-9/p/10243906.html
Copyright © 2020-2023  润新知