spring-bootr整合mybatis

来源:互联网 发布:数据加密 编辑:程序博客网 时间:2024/06/06 17:02

1.在pom.xml文件中导入

<dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId>   <version>1.1.1</version></dependency><!-- mysql 驱动 --><dependency>   <groupId>mysql</groupId>   <artifactId>mysql-connector-java</artifactId></dependency>
在配置文件上application.properties中 配置上jdbc的一些配置信息

#jdbcspring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=rootspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.max-active=10spring.datasource.max-idle=5spring.datasource.min-idle=0#修改spring-boot的默认端口号server.port=8022
启动类上做如下配置

package com.springbootmybatis;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.tomcat.jdbc.pool.DataSource;import org.mybatis.spring.SqlSessionFactoryBean;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.core.io.support.PathMatchingResourcePatternResolver;import org.springframework.jdbc.datasource.DataSourceTransactionManager;import org.springframework.transaction.PlatformTransactionManager;//@MapperScan注解,指定扫描的mapper接口所在的包 也可以在mapper接口上加@Mapper 两者效果一样@SpringBootApplication@MapperScan("com/springbootmybatis/dao")public class SpringbootMybatisApplication {   @Bean   @ConfigurationProperties(prefix = "spring.datasource")   public DataSource dataSource() {      return new org.apache.tomcat.jdbc.pool.DataSource();   }   @Bean   public SqlSessionFactory sqlSessionFactoryBean() throws Exception {      SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();      sqlSessionFactoryBean.setDataSource(dataSource());      PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();      sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));      return sqlSessionFactoryBean.getObject();   }   @Bean   public PlatformTransactionManager transactionManager() {      return new DataSourceTransactionManager(dataSource());   }   public static void main(String[] args) {      SpringApplication.run(SpringbootMybatisApplication.class, args);   }}
mapper接口(不需要写任何的实现类)
package com.springbootmybatis.dao;import com.springbootmybatis.bean.Users;/** * Created by 340092 on 2017/11/20. */public interface UsersDao {    Users findById(Long id);}

mapper配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.springbootmybatis.dao.UsersDao">   <select id="findById" resultType="com.springbootmybatis.bean.Users">       SELECT * FROM users WHERE id = #{id}   </select></mapper>
这里注意namespace 对应的是mapper接口的全路径
Users实体类
package com.springbootmybatis.bean;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import java.io.Serializable;/** * Created by 340092 on 2017/11/20. */public class Users implements Serializable {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private long id;    private String email;    private String name;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

最后controller层

package com.springbootmybatis.controller;import com.springbootmybatis.bean.Users;import com.springbootmybatis.dao.UsersDao;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * Created by 340092 on 2017/11/20. */@RestController@RequestMapping("/users")public class UsersController {    @Resource    UsersDao usersDao;    @RequestMapping(value = "/findById",produces="text/html;charset=UTF-8",method = RequestMethod.GET)    public String findById(Long id){        Users byId = usersDao.findById(id);        return byId.getName();    }}
以上代码比较简陋 主要是的怎么整合
还有一种比较快捷的方式 全部交给spring-boot管理
导入依赖
<dependency>   <groupId>org.mybatis.spring.boot</groupId>   <artifactId>mybatis-spring-boot-starter</artifactId>   <version>1.1.1</version></dependency><!-- mysql 驱动 --><dependency>   <groupId>mysql</groupId>   <artifactId>mysql-connector-java</artifactId></dependency><dependency>   <groupId>com.alibaba</groupId>   <artifactId>druid</artifactId>   <version>1.0.5</version></dependency>

这里采用的是阿里巴巴的druid数据连接池

为了方便使用 yml配置文件

application.yml

配置内容如下
spring:  datasource:    type: com.alibaba.druid.pool.DruidDataSource    url: jdbc:mysql://localhost:3306/test    username: root    password: root    driver-class-name: com.mysql.jdbc.Driver    minIdle: 1    maxActive: 2    initialSize: 1    timeBetweenEvictionRunsMillis: 3000    minEvictableIdleTimeMillis: 300000    testWhileIdle: true    testOnBorrow: false    testOnReturn: falsemybatis:  mapperLocations: classpath*:mapper/*.xml  typeAliasesPackage: com.springbootmybatis.dao  
Users.java:
package com.springbootmybatis.bean;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import java.io.Serializable;/** * Created by 340092 on 2017/11/20. */public class Users implements Serializable {    @Id    @GeneratedValue(strategy = GenerationType.AUTO)    private long id;    private String email;    private String name;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}
UserDao.java
package com.springbootmybatis.dao;import com.springbootmybatis.bean.Users;import org.apache.ibatis.annotations.Mapper;/** * Created by 340092 on 2017/11/20. */@Mapperpublic interface UsersDao {    Users findById(Long id);}
这里要加上@Mapper不然的话找不到要用的Mapper接口
mapper配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.springbootmybatis.dao.UsersDao">   <select id="findById" resultType="com.springbootmybatis.bean.Users">       SELECT * FROM users WHERE id = #{id}   </select></mapper>

controller类
package com.springbootmybatis.controller;import com.springbootmybatis.bean.Users;import com.springbootmybatis.dao.UsersDao;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * Created by 340092 on 2017/11/20. */@RestController@RequestMapping("/users")public class UsersController {    @Resource    UsersDao usersDao;    @RequestMapping(value = "/findById",produces="text/html;charset=UTF-8",method = RequestMethod.GET)    public String findById(Long id){        Users byId = usersDao.findById(id);        return byId.getName();    }}
启动类
package com.springbootmybatis;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.transaction.annotation.EnableTransactionManagement;@SpringBootApplication//启注解事务管理@EnableTransactionManagementpublic class SpringbootMybatisApplication {   public static void main(String[] args) {      SpringApplication.run(SpringbootMybatisApplication.class, args);   }}
启动之后  以上两种方式 在浏览器输入访问路径http://localhost:8022/users/findById?id=7
即可访问  其实整合的方式有很多种可以自己尝试一下

原创粉丝点击