Mybatis系列(四)注解

1.pom.xlm:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>spring-mybatis_zhujie</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>spring-mybatis</name><description>Demo project for Spring Boot</description><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.10.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

2.application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driverserver.port=8081

3.mybatis-config-local.xml:

<?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 resource="application.properties"></properties><!-- 配置mybatis运行环境 --><environments default="cybatis"><environment id="master"><!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --><transactionManager type="JDBC" /><!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --><!-- POOLED 表示支持JDBC数据源连接池 --><!-- UNPOOLED 表示不支持数据源连接池 --><!-- JNDI 表示支持外部数据源连接池 --><dataSource type="POOLED"><property name="driver" value="${spring.datasource.driver-class-name}" /><property name="url" value="${spring.datasource.url}" /><property name="username" value="${spring.datasource.username}" /><property name="password" value="${spring.datasource.password}" /></dataSource></environment><environment id="slave"><!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 --><transactionManager type="JDBC" /><!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI --><!-- POOLED 表示支持JDBC数据源连接池 --><!-- UNPOOLED 表示不支持数据源连接池 --><!-- JNDI 表示支持外部数据源连接池 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver" /><property name="url" value="jdbc:mysql://localhost:3306/user" /><property name="username" value="root" /><property name="password" value="root" /></dataSource></environment></environments><mappers><mapper class = "com.example.mybatisZhuJie.dao.UserDao"/></mappers>
</configuration>

4.User:

package com.example.mybatisZhuJie.entity;public class User {private int id;private String user_name;private String password;private int age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getUser_name() {return user_name;}public void setUser_name(String user_name) {this.user_name = user_name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"id=" + id +", user_name='" + user_name + '\'' +", password='" + password + '\'' +", age=" + age +'}';}
}

5.UserDao:

package com.example.mybatisZhuJie.dao;import com.example.mybatisZhuJie.entity.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.ArrayList;public interface UserDao {@Select("select id, user_name ,password, age from user_t")public ArrayList<User> selectAll();@Insert("insert into user_t(id, user_name ,password, age) values(#{id},#{user_name}, #{password}, #{age})")public int insert(User user);@Delete("delete from user_t where id =#{id}")public int delete(@Param("id") int id);//Sql语句进行分页@Select("select id, user_name ,password, age from user_t limit #{currPage}, #{pageSize}")public ArrayList<User> queryStudentsBySql(@Param("currPage") int currPage, @Param("pageSize") int pageSize);
}

6.UserDaoIml:

package com.example.mybatisZhuJie.dao;import com.example.mybatisZhuJie.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import java.util.ArrayList;public class UserDaoIml implements UserDao {private SqlSessionFactory sessionFactory;public UserDaoIml(SqlSessionFactory sessionFactory){this.sessionFactory = sessionFactory;}public ArrayList<User> selectAll() {ArrayList<User> users = new ArrayList<>();SqlSession sqlSession = null;try{sqlSession = sessionFactory.openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);users = userDao.selectAll();return users;} catch (Exception e) {e.printStackTrace();return users;}}public int insert(User user) {SqlSession sqlSession = null;int count = 0;try{sqlSession = sessionFactory.openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);count = userDao.insert(user);if( count > 0) {sqlSession.commit();}return count;} catch (Exception e) {e.printStackTrace();return count;}}public int delete(int id) {SqlSession sqlSession = null;int count = 0;try{sqlSession = sessionFactory.openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);count = userDao.delete(id);if( count > 0) {sqlSession.commit();}return count;} catch (Exception e) {e.printStackTrace();return count;}}public ArrayList<User> queryStudentsBySql(@Param("currPage") int currPage, @Param("pageSize") int pageSize) {ArrayList<User> users = new ArrayList<>();SqlSession sqlSession = null;try{sqlSession = sessionFactory.openSession();UserDao userDao = sqlSession.getMapper(UserDao.class);users = userDao.queryStudentsBySql(currPage, pageSize);return users;} catch (Exception e) {e.printStackTrace();return users;}}
}

7.springboot启动项:

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.concurrent.TimeoutException;@SpringBootApplication
public class SpringBootAll {private static String env = "local";public static SqlSessionFactory sqlSessionFactory;public static void main(String[] args) throws Exception{new  SpringBootAll().init();SpringApplication.run(SpringBootAll.class, args);}public void init() throws Exception{//初始化数据库-单个数据库
        initMySql();}/*** 单个数据库*/private void initMySql(){try{String resource = String.format("mybatis-config-%s.xml", SpringBootAll.env);Reader reader = Resources.getResourceAsReader(resource);SpringBootAll.sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (Exception e) {e.printStackTrace();}}
}

8.controller:

package com.example.mybatisZhuJie.controller;import com.example.mybatisZhuJie.AppZhuJie;
import com.example.mybatisZhuJie.dao.UserDao;
import com.example.mybatisZhuJie.dao.UserDaoIml;
import com.example.mybatisZhuJie.entity.User;
import org.springframework.web.bind.annotation.*;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;@RestController
public class UserController {UserDao userDao = new UserDaoIml(SpringBootAll.sqlSessionFactory);@RequestMapping(value = "/map", method = RequestMethod.GET)@ResponseBodypublic Map<String, Object> getRegTimeByUserId (HttpServletRequest request, HttpServletResponse response) throws Exception{Map<String, Object> result = new HashMap<String, Object>();String data = request.getParameter("data");result.put("data",data);result.put("code","200");return result;}@RequestMapping(value = "/select/all", method = RequestMethod.GET)@ResponseBodypublic List<User> selectAll(HttpServletRequest request, HttpServletResponse response) throws Exception{List<User> users = userDao.selectAll();return users;}@RequestMapping(value = "/select/some", method = RequestMethod.GET)@ResponseBodypublic ArrayList<User> selectSome(HttpServletRequest request, HttpServletResponse response,@RequestParam(value = "start", defaultValue = "0") int start,@RequestParam(value = "end", defaultValue = "3") int end) throws Exception{ArrayList<User> users = userDao.queryStudentsBySql(start, end);return users;}@RequestMapping(value = "/delete", method = RequestMethod.GET)@ResponseBodypublic  String delete(@RequestParam(value = "id", defaultValue = "6") int id) {int count = userDao.delete(id);return "成功删除" + count + "条数据!";}@RequestMapping(value = "/insert", method = RequestMethod.GET)@ResponseBodypublic  String insert(@RequestParam(value = "id", defaultValue = "6") int id, @RequestParam(value = "username", defaultValue = "易水寒")String username, @RequestParam(value = "password", defaultValue = "yiqq")String password, @RequestParam(value = "age", defaultValue = "22") int age) {User user = new User();user.setId(id);user.setAge(age);user.setPassword(password);user.setUser_name(username);int count = userDao.insert(user);return "成功插入" + count + "条数据!";}@RequestMapping(value = "/hello", method = RequestMethod.GET)@ResponseBodypublic  String say(@RequestParam(value = "name", defaultValue = "易水寒") String name) {return "Hello World: " + name;}}

9.sql:

CREATE TABLE `user_t` (`id` int(10) NOT NULL AUTO_INCREMENT,`user_name` varchar(10) DEFAULT NULL,`password` varchar(10) DEFAULT NULL,`age` int(10) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=896 DEFAULT CHARSET=utf8

转载于:https://www.cnblogs.com/heqiyoujing/p/9470457.html

Mybatis系列(四)注解相关推荐

  1. Mybatis系列(四):Mybatis缓存

    一.MyBatis缓存介绍 MyBatis 提供了一级缓存和二级缓存的支持        1. 一级缓存: 默认开启,基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Se ...

  2. 【深入浅出MyBatis系列八】SQL自动生成插件

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  3. 【深入浅出MyBatis系列十一】缓存源码分析

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# 深入浅出MyBatis系列 [深入浅出MyBatis系列一]MyBatis入门 [深入浅出MyBatis系列二]配置 ...

  4. Mybatis系列全解(四):全网最全!Mybatis配置文件XML全貌详解

    封面:洛小汐 作者:潘潘 做大事和做小事的难度是一样的.两者都会消耗你的时间和精力,所以如果决心做事,就要做大事,要确保你的梦想值得追求,未来的收获可以配得上你的努力. 前言 上一篇文章 <My ...

  5. 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)

    上篇文章<深入浅出Mybatis系列(三)---配置详解之properties与environments(mybatis源码篇)> 介绍了properties与environments, ...

  6. Mybatis系列全解(六):Mybatis最硬核的API你知道几个?

    2020 年的大疫情,把世界撕成几片. 时至今日,依旧人心惶惶. 很庆幸,身处这安稳国, 兼得一份安稳工. · 东家常讲的一个词:深秋心态 . 大势时,不跟风.起哄, 萧条时,不放弃播种和耕耘的信心, ...

  7. Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!

    封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 - 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨森! ...

  8. Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

    封面:洛小汐 作者:潘潘 若不是生活所迫,谁愿意背负一身才华. 前言 上节我们介绍了 < Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 >,内容很详细( ...

  9. sed修炼系列(四):sed中的疑难杂症

    sed系列文章: sed修炼系列(一):花拳绣腿之入门篇 sed修炼系列(二):武功心法(info sed翻译+注解) sed修炼系列(三):sed高级应用之实现窗口滑动技术 sed修炼系列(四):s ...

  10. 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置[转]

    上篇文章<深入浅出Mybatis系列(五)---TypeHandler简介及配置(mybatis源码篇)>简单看了一下TypeHandler, 本次将结束对于mybatis的配置文件的学习 ...

最新文章

  1. java基础--集合案例斗地主发牌排序
  2. android studio发布项目到github
  3. better-scroll 与 Vue 结合
  4. Node.js webpack
  5. c语言冒泡排序的两种实现方式,c语言中冒泡排序的实现原理是什么?
  6. 学python看谁的视频比较好-python学习视频好的有哪些
  7. 草根程序员进入BAT
  8. 红耳朵象全国战略,让大众享受上门洗车的福利
  9. 计算机应用基础——计算机软件(二)
  10. python做波士顿房价预测
  11. 阿里的敏捷组织和中台策略有何不同?
  12. s:iterator各种遍历用法
  13. 安卓开发 java.lang.IllegalStateException isPlaying() 解决方案
  14. gym:Problem A Artwork(并查集思维题)
  15. 触发器(四、执行顺序控制)
  16. 哈工大软件构造lab3
  17. 《你的孤独,虽败犹荣》阅读笔记
  18. 十进制转二进制(除2取余法)
  19. 去AV片马赛克,开发者被抓了
  20. 【Django】开发日报_3_Day:员工管理系统-创建项目

热门文章

  1. 面试题之接口和抽象类的区别
  2. 常见排序算法之插入排序
  3. SpringMVC结合ajaxfileupload文件无刷新上传
  4. oracle报错ORA-01843: not a valid month
  5. 汇编实验五 编写、调试具有多个段的程序
  6. Python的三种基本数据类型
  7. 27.3. Directory and File System Related
  8. Oracle等待事件之Enqueue(锁)
  9. 利用ldirectord实现lvs后端realserver健康状态检查
  10. [K/3Cloud]创建一个操作校验器