Spring boot----整合mybatis(mysql)
来源:互联网 发布:网络电影剧本 编辑:程序博客网 时间:2024/05/30 05:41
这篇文章是在上篇博客,搭建好demo工程的基础上开始的,前面的过程就不赘述了。
mybatis,我现在理解是对数据库对象进行管理的一个框架。
首先需要去下载一个mysql,并安装。
登录mysql后,在里面添加一张表,具体的操作不在这里讲了,我把命令写在这里
create database test2;
use test2;
create table info(
id int,
name varchar(10),
age int
);
为了测试,我们插入一下假数据
insert into info values(1,"tom",12);
insert into info values(2,"jak",14);
insert into info values(3,"lili",13);
insert into info values(4,"tomas",14);
insert into info values(5,"john",12);
接下来开始,进行demo的搭建。
1.修改application.properties,把服务器信息录入
spring.datasource.driver-class-name=com.mysql.jdbc.Driver #这是驱动类,不修改,就这么写spring.datasource.url=jdbc:mysql://localhost:3306/test2 #这是服务器地址和端口,没有修改的话,就这么写,test2是刚才在mysql中建的database的名字spring.datasource.username=root #用户名spring.datasource.password=root #密码spring.datasource.max-active=10 #默认设置spring.datasource.max-idle=5 #默认设置spring.datasource.min-idle=0 #默认设置
2.在resource下建一个文件夹mybatis,在下面建一个文件DaoMapper.xml,内容如下,注意把里面的包名修改成你的名字
<?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"><!-- namespace必须指向Dao接口 --><mapper namespace="com.hjf.boot.demo.boot_mybatis.dao.TestDao"> <!-- 所有列 --> <sql id="Column_list"> id, name, age </sql> <!--type="TestPOJO" 这里需要使用自定义类型或者系统预定义数据类型,不能乱写 --> <resultMap id="ListTest" type="TestPOJO" > <id column="id" property="id" /> <result column="name" property="name" /> <result column="age" property="age" /> </resultMap> <!-- 查询的sql语句 --> <!-- parameterType 能传输基本数据类型(只能传输一个) 通过#{参数名}获取 如果是传输复杂数据类型,通过#{属性名}或 #{map的KeyName}即可获取传入的值 --> <select id="get" parameterType="int" resultMap="ListTest"> SELECT <include refid="Column_list" /> FROM info WHERE id= #{age} </select> <delete id="delete" parameterType="int" > DELETE FROM info WHERE id= #{age} </delete> <insert id="insert" parameterType="TestPojo"> INSERT INTO info VALUES (#{id} ,#{name},#{age}) </insert> <update id="update" parameterType="TestPojo"> update info SET name=#{name},age=#{age} where id=#{id} </update></mapper>
3.在你的工程目录的java包下面建几个文件夹,api、config、dao、domain、services
api:这里放controller,控制层
config:这里放配置的程序
dao:数据访问程序,model层
domain:放入实体类
services:这个放service
4.在api下面建TestController.java
@RestController
public class TestController { @Autowired //自动装备,可以创建的时候不用赋初值,自动赋值,我的初步理解 private TestServices testServices; @RequestMapping("/sayhi") public String sayhi(){ return "hello"; } @RequestMapping(value = "/show") //如果请求地址是/show,返回的函数如下 public String show(){ return testServices.show(); } @RequestMapping(value = "/showDao") //如果请求地址是showDao,调用的返回函数如下,地址对大小写敏 public Object showDao(int id){ //这里定义的 int age,是传给testServices.showDao的参数,名称自定义, //地址中的参数名称由TestMapper.xml中定义 return testServices.showDao(id); } @RequestMapping(value = "/delete") public void delete(int id){ testServices.delete(id); } @RequestMapping(value = "/insert",params={"id","name","age"} ) @ResponseBody public void insert(@RequestParam("id") long id, @RequestParam("name") String name, @RequestParam("age") int age){ TestPOJO testPOJO = new TestPOJO(); testPOJO.setId(id); testPOJO.setAge(age); testPOJO.setName(name); testServices.insert(testPOJO); } @RequestMapping(value = "/update",params={"id","name","age"} ) @ResponseBody public void update(@RequestParam("id") long id, @RequestParam("name") String name, @RequestParam("age") int age){ TestPOJO testPOJO = new TestPOJO(); testPOJO.setId(id); testPOJO.setAge(age); testPOJO.setName(name); testServices.update(testPOJO); }}
5.dao文件夹下建立Mapper.java和TestDao.java
Mapper.java内容如下:
@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Componentpublic @interface Mapper { String value() default "";}TestDao.java内容如下:@Mapperpublic interface TestDao { List<TestPOJO> get(int age); void delete(int id); void insert(TestPOJO pojo); void update(TestPOJO pojo);}6.domain文件夹建立TestPOJO.javapublic class TestPOJO { private Long id; private String name; private int age; public Long getId() { return id; } public void setId(Long 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; }}7.services文件夹下建立TestServices.java@Servicepublic class TestServices { @Autowired private TestDao testDao; public String show(){ return "hello world,uni!"; } //showDao方法,参数id是自己命名定义,不影响其他,返回类型是List的自定义testPOJO //调用了testDao的get方法 public List<TestPOJO> showDao(int age){ return testDao.get(age); } public void delete(int age){ testDao.delete(age); } public void insert(TestPOJO pojo){ testDao.insert(pojo); } public void update(TestPOJO pojo){ testDao.update(pojo); }}8.在config下建立3个java文件,DataSourceConfig.java,MyBatisConfig.java,MyBatisMapperScannerConfig.javaDataSourceConfig:这个是读取配置文件中datasource信息的MyBatisConfig:这个是读取Mapper.xml中信息的9.到这里所有的代码都写完了,应该可以运行了,但我之前在测试时,发现程序会包ibatis包里的方法引用不对,我百度了好久,有个网友说是依赖中的版本问题,我把我的pom.xml也放在这里MyBatisMapperScannerConfig:这个是给程序指定查找目录的DataSourceConfig代码如下:@Configurationpublic class DataSourceConfig { @Bean @ConfigurationProperties(prefix="spring.datasource") public DataSource dataSource(){ return new DataSource(); }}MyBatisConfig代码如下:@Configurationpublic class MyBatisConfig implements TransactionManagementConfigurer { @Autowired DataSource dataSource; @Bean(name = "sqlSessionFactory") public SqlSessionFactory sqlSessionFactoryBean() { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setTypeAliasesPackage("com.hjf.boot.demo.boot_mybatis.domain"); //添加XML目录 ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); try { bean.setMapperLocations(resolver.getResources("classpath:/mybatis/*Mapper.xml")); return bean.getObject(); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } } @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } @Bean public PlatformTransactionManager annotationDrivenTransactionManager() { return new DataSourceTransactionManager(dataSource); }}MyBatisMapperScannerConfig代码如下:@Configuration@AutoConfigureAfter(MyBatisConfig.class)public class MyBatisMapperScannerConfig { @Bean public MapperScannerConfigurer mapperScannerConfigurer() { MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer(); mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory"); mapperScannerConfigurer.setBasePackage("com.hjf.boot.demo.boot_mybatis"); mapperScannerConfigurer.setAnnotationClass(Mapper.class); return mapperScannerConfigurer; }}<?xml version="1.0" encoding="UTF-8"?><project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.6.RELEASE</version> <name>Spring Transaction</name> <description>Spring Transaction</description> <url>https://github.com/spring-projects/spring-framework</url> <organization> <name>Spring IO</name> <url>http://projects.spring.io/spring-framework</url> </organization> <licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <developers> <developer> <id>jhoeller</id> <name>Juergen Hoeller</name> <email>jhoeller@pivotal.io</email> </developer> </developers> <scm> <connection>scm:git:git://github.com/spring-projects/spring-framework</connection> <developerConnection>scm:git:git://github.com/spring-projects/spring-framework</developerConnection> <url>https://github.com/spring-projects/spring-framework</url> </scm> <issueManagement> <system>Jira</system> <url>https://jira.springsource.org/browse/SPR</url> </issueManagement> <dependencies> <dependency> <groupId>aopalliance</groupId> <artifactId>aopalliance</artifactId> <version>1.0</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>com.ibm.websphere</groupId> <artifactId>uow</artifactId> <version>6.0.2.17</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>javax.ejb</groupId> <artifactId>ejb-api</artifactId> <version>3.0</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>javax.resource</groupId> <artifactId>connector-api</artifactId> <version>1.5</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>javax.transaction-api</artifactId> <version>1.2</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>4.2.6.RELEASE</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>4.2.6.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.2.6.RELEASE</version> <scope>compile</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.2.6.RELEASE</version> <scope>compile</scope> </dependency> </dependencies></project>10.运行程序,这个startApp是我写的一个程序入口
程序启动中
程序启动完成
11.打开浏览器,输入地址栏
http://localhost:8082/show,显示hello界面
http://localhost:8082/showDao?id=1,显示查询结果
http://localhost:8082/delete?id=1 从数据库中删除,浏览器没有返回显示内容,需要从数据库中查询看结果
http://localhost:8082/insert?id=1&name=emli&age=3 从数据库中插入数据,浏览器没有返回显示内容,需要从数据库中查询看结果
http://localhost:8082/update?id=1&name=emliy&age=33 从数据库中更新id=1的数据,浏览器没有返回显示内容,需要从数据库中查询看结果
0 0
- Spring boot----整合mybatis(mysql)
- spring boot 整合 druid + Mysql + Mybatis
- Spring Boot 整合 Mybatis 和 MySQL
- spring-boot结合mysql整合mybatis
- Spring boot + mysql +mybatis 配置整合实例
- Spring Boot整合MyBatis
- spring boot 整合mybatis
- Spring Boot整合MyBatis
- Spring-boot整合Mybatis
- Spring Boot整合MyBatis
- spring boot 整合mybatis
- Spring Boot整合Mybatis
- spring boot mybatis整合
- spring boot整合mybatis
- Spring Boot 整合 MyBatis
- spring-boot整合mybatis
- Spring Boot整合Mybatis
- Spring Boot 整合 MyBatis
- nodeJs初接触(一)第一个程序代码hello world!
- 办公文件的转换-word/图片/pdf 等转换
- HDU1060:Leftmost Digit(数论)
- 鸟哥的Linux私房菜学习笔记--超简单文书编辑器:nano
- css知识杂货铺小记
- Spring boot----整合mybatis(mysql)
- SSM框架整合(Spring+SpringMVC+Mybatis)
- vmware 共享文件夹hgfs下为空的解决办法
- Nginx的配置文件nginx.conf配置详解
- 412. Fizz Buzz
- updatedata(true) 与 updatedata(false)
- 1.struts2HelloWorld
- Spring MVC Controller中返回json数据中文乱码处理
- 在系统中增加一个可唤醒中断--简单实例