mybatis之注解式开发
注解:
- 注解是用于描述代码的代码。例如:@Test(用于描述方法进行junit测试),@Override(用于描述方法的重写),@Param(用于描述属性的名称)
- 注解的使用风格:@xxx(属性),使用前必须进行导包
- 使用注解一般用于简化配置文件,但是注解有时候也不是很友好(有时候反而更麻烦),例如动态sql
- 关于注解的属性
属性的设定方式是:属性名=属性值
- 关于属性的类型
- 基本类型和String,可以直接使用双引号的形式
- 数组类型,name={值1,值2,......}如果数组元素只有一个,可以省略大括号。
- 对象类型,name=@对象名(属性)
- 如果属性是该注解的默认注解,而且该注解只配置这一个属性,key将属性名省略。
mybatis注解之CURD代码如下
- package com.bjsxt.mapper;
- import java.util.List;
- import org.apache.ibatis.annotations.Delete;
- import org.apache.ibatis.annotations.Insert;
- import org.apache.ibatis.annotations.Select;
- import org.apache.ibatis.annotations.Update;
- import com.bjsxt.pojo.Student;
- public interface StudentMapper {
- @Select("select * from t_student")
- List<Student> selAll();
- @Insert("insert into t_student values (default, #{name}, #{age}, #{gender}, #{cid})")
- int insStu(Student student);
- @Update("update t_student set age=#{1} where id=#{0}")
- int updStu(int id, int age);
- @Delete("delete from t_student where id=#{0}")
- int delStu(int id);
- }
- package com.bjsxt.pojo;
- import java.io.Serializable;
- public class Student implements Serializable {
- private int id;
- private String name;
- private int age;
- private String gender;
- private int cid;
- public Student() {
- super();
- }
- 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 int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getGender() {
- return gender;
- }
- public void setGender(String gender) {
- this.gender = gender;
- }
- public int getCid() {
- return cid;
- }
- public void setCid(int cid) {
- this.cid = cid;
- }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + age;
- result = prime * result + cid;
- result = prime * result + ((gender == null) ? 0 : gender.hashCode());
- result = prime * result + id;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- return result;
- }
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- Student other = (Student) obj;
- if (age != other.age)
- return false;
- if (cid != other.cid)
- return false;
- if (gender == null) {
- if (other.gender != null)
- return false;
- } else if (!gender.equals(other.gender))
- return false;
- if (id != other.id)
- return false;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- return true;
- }
- @Override
- public String toString() {
- return "Student [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", cid=" + cid + "]";
- }
- }
- package com.bjsxt.test;
- import java.util.List;
- import org.apache.ibatis.session.SqlSession;
- import org.junit.Test;
- import com.bjsxt.mapper.StudentMapper;
- import com.bjsxt.pojo.Student;
- import com.bjsxt.util.MyBatisUtil;
- public class TestStu {
- @Test
- public void testSel() {
- SqlSession session = MyBatisUtil.getSession();
- StudentMapper mapper = session.getMapper(StudentMapper.class);
- List<Student> list = mapper.selAll();
- for (Student student : list) {
- System.out.println(student);
- }
- session.close();
- }
- @Test
- public void testIns() {
- SqlSession session = MyBatisUtil.getSession();
- StudentMapper mapper = session.getMapper(StudentMapper.class);
- Student student = new Student();
- student.setName("小王");
- student.setAge(20);
- student.setGender("女");
- student.setCid(2);
- int num = mapper.insStu(student);
- if(num > 0) {
- System.out.println("ok");
- session.commit();
- } else {
- session.rollback();
- }
- session.close();
- }
- @Test
- public void testUpd() {
- SqlSession session = MyBatisUtil.getSession();
- StudentMapper mapper = session.getMapper(StudentMapper.class);
- int num = mapper.updStu(6, 30);
- if(num > 0) {
- System.out.println("ok");
- session.commit();
- } else {
- session.rollback();
- }
- session.close();
- }
- @Test
- public void testDel() {
- SqlSession session = MyBatisUtil.getSession();
- StudentMapper mapper = session.getMapper(StudentMapper.class);
- int num = mapper.delStu(6);
- if(num > 0) {
- System.out.println("ok");
- session.commit();
- } else {
- session.rollback();
- }
- session.close();
- }
- }
- package com.bjsxt.util;
- import java.io.IOException;
- import java.io.InputStream;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- public class MyBatisUtil {
- private static SqlSessionFactory factory = null;
- static {
- try {
- InputStream is = Resources.getResourceAsStream("mybatis-cfg.xml");
- factory = new SqlSessionFactoryBuilder().build(is);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static SqlSession getSession() {
- SqlSession session = null;
- if (factory != null) {
- // true表示开启自动提交
- // session = factory.openSession(true);
- session = factory.openSession();
- }
- return session;
- }
- }
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/java505
- jdbc.username=root
- jdbc.password=root
- # Set root category priority to INFO and its only appender to CONSOLE.
- log4j.rootCategory=ERROR, CONSOLE
- # log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
- # 单独设置SQL语句的输出级别为DEBUG级别
- log4j.logger.com.bjsxt.mapper=DEBUG
- # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
- log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
- log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
- log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n
- # LOGFILE is set to be a File appender using a PatternLayout.
- log4j.appender.LOGFILE=org.apache.log4j.FileAppender
- log4j.appender.LOGFILE.File=d:/test.log
- log4j.appender.LOGFILE.Append=true
- log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
- log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <!-- properties加载外部文件 -->
- <properties resource="db.properties" />
- <!-- settings标签 -->
- <settings>
- <!-- 设置MyBatis使用log4j日志支持 -->
- <setting name="logImpl" value="LOG4J"/>
- </settings>
- <!-- typeAliases给类型起别名 -->
- <typeAliases>
- <package name="com.bjsxt.pojo" />
- </typeAliases>
- <environments default="dev">
- <environment id="dev">
- <transactionManager type="JDBC" />
- <dataSource type="POOLED">
- <property name="driver" value="${jdbc.driver}"/>
- <property name="url" value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <package name="com.bjsxt.mapper" />
- </mappers>
- </configuration>
mybatis之注解式开发的更多相关文章
- mybatis之注解式开发之关联查询
package com.bjsxt.mapper; import org.apache.ibatis.annotations.Select; import com.bjsxt.pojo.Clazz; ...
- 13.MyBatis注解式开发
mybatis 的注解,主要是用于替换映射文件.而映射文件中无非存放着增.删.改.查 的 SQL 映射标签.所以,mybatis 注解,就是要替换映射文件中的 SQL 标签. mybatis 官方文档 ...
- MyBatis_注解式开发
一.注解式开发 mybatis的注解主要替换映射文件. 二.基础语法 注解首字母大写,因为注解与类.接口是同一级别的(类同一层级的:类,接口,注解,枚举).一个注解,后台对应着一个@interface ...
- Spring MVC (二)注解式开发使用详解
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- 【转】Eclipse中设置ButterKnife进行注解式开发步骤 -- 不错
原文网址:http://www.bubuko.com/infodetail-974262.html 最近在进行Android注解式开发的学习,正在尝试用ButterKnife.ButterKnife的 ...
- 总结切面编程AOP的注解式开发和XML式开发
有段日子没有总结东西了,因为最近确实有点忙,一直在忙于hadoop集群的搭建,磕磕碰碰现在勉强算是能呼吸了,因为这都是在自己的PC上,资源确实有点紧张(搭建过程后期奉上),今天难得大家都有空(哈哈哈~ ...
- SpringMVC 注解式开发
SpringMVC的注解式开发是指,处理器是基于注解的类的开发.对于每一个定义的处理器,无需再配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册.即注解替换是配置文件中对于处理器的注册 ...
- Spring MVC注解式开发
MVC注解式开发即处理器基于注解的类开发, 对于每一个定义的处理器, 无需在xml中注册. 只需在代码中通过对类与方法的注解, 即可完成注册. 定义处理器 @Controller: 当前类为处理器 @ ...
- 《SpringMVC从入门到放肆》十一、SpringMVC注解式开发处理器方法返回值
上两篇我们对处理器方法的参数进行了分别讲解,今天来学习处理器方法的返回值. 一.返回ModelAndView 若处理器方法处理完后,需要跳转到其它资源,且又要在跳转资源之间传递数据,此时处理器方法返回 ...
随机推荐
- grafana----alert
Alert只有grafana V4.0以上. Introduction(介绍) Grafana中的alert允许在dashboard panels你附加一些规则.当你保存仪表板Grafana将提取的报 ...
- confd template src格式和 templates 语法
Template Resources Template resources are written in TOML and define a single template resource. Tem ...
- sql 一对多查询
1. 一对多查询 查询departmentinfo字典下所有部门的人员数量 select * from departmentinfo a left join (select count(*) User ...
- Visio 画图
流程图 圆角矩形表示"开始"与"结束" 矩形表示行动方案.普通工作环节用 菱形表示问题判断或判定(审核/审批/评审)环节 平行四边形表示输入输出 箭头代表工作流 ...
- js的序列化和反序列化
(1)序列化 即js中的Object转化为字符串 1.使用toJSONString var last=obj.toJSONString(); //将JSON对象转化为JSON字符 2.使用strin ...
- 图->连通性->最小生成树(克鲁斯卡尔算法)
文字描述 上一篇博客介绍了最小生成树(普里姆算法),知道了普里姆算法求最小生成树的时间复杂度为n^2, 就是说复杂度与顶点数无关,而与弧的数量没有关系: 而用克鲁斯卡尔(Kruskal)算法求最小生成 ...
- 使用@import导入实现了ImportBeanDefinitionRegistrar接口的类,不能被注册为bean
今天在调试公司spring项目的时候发现了这样一个问题,由于我们的项目使用的是springboot就以springboot为例,代码如下: @Import({DataSourceRegister.cl ...
- ECharts图形库
ECharts图形库百度的项目,图形的创建也比较简单,直接引用Javascript即可 1,引入<script src="{{ url_for("static",f ...
- 机器Coding For WPF
declare @modelcode varchar(90)='AutoProjectType'declare @ns varchar(90)='WpfApplication'declare @dat ...
- fiddler 实现代理的操作