Spring boot整合Mybits

1、原始java访问数据库
		开发流程麻烦
		1、注册驱动/加载驱动
			Class.forName("com.mysql.jdbc.Driver")
		2、建立连接
			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname","root","root");
		3、创建Statement

		4、执行SQL语句

		5、处理结果集

		6、关闭连接,释放资源

学习了一段时间的Spring boot框架今天抽空将之前学的东西,进行一些简单的整理。

2、apache dbutils框架
		比上一步简单点
		官网:https://commons.apache.org/proper/commons-dbutils/
	3、jpa框架
		spring-data-jpa
		jpa在复杂查询的时候性能不是很好
	
	4、Hiberante   解释:ORM:对象关系映射Object Relational Mapping
		企业大都喜欢使用hibernate
	
	5、Mybatis框架   
		互联网行业通常使用mybatis
		不提供对象和关系模型的直接映射,半ORM

1.导入相关的依赖

<?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>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.gaven</groupId>
    <artifactId>truck-loading</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>truck-loading</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>                                                 //mybits的核心依赖
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>                                          //数据库驱动
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.创建实体类

(省略setter和getter)

3.配置基本的属性连接数据库的配置在application.properties文件下编写

spring.datasource.url=jdbc:mysql://localhost:3306/truck?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC

spring.datasource.username =root
spring.datasource.password =

  #在控制台打印sql语句
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

4.创建controller简单的测试接口

通过 http://localhost:8080/api/v1/user/test 做测试

 5.编写数据层的范围接口

 @Select("select * from user")
/* @Results({
         @Result(column = "id",property = "id"),
         @Result(column = "user_name",property = "userName"),
         @Result(column = "password",property = "password"),
         @Result(column = "phone",property = "phone"),
 })*/
 List<User> findAll(); 

遇到的问题1:

此问题为时区问题,在 JDBC 的连接 url 部分加上 serverTimezone=UTC 即可。 

解决办法:

遇到的问题2: 

username为空 因为DB中的字段和实体类的字段不一致导致不能够进行映射

解决办法:

技巧:保存对象,获取数据库自增id 
		 @Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")

最后对整合mybits的步骤和注意事项进行总结:

  1. 导入依赖
  2. 配置数据库的连接配置
  3. 在启动类添加mapper(数据库操作)的扫描@MapperScan("指定扫描的类的全包名")

参考语法

http://www.mybatis.org/mybatis-3/zh/java-api.html

相关资料:

http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration

https://github.com/mybatis/spring-boot-starter/tree/master/mybatis-spring-boot-samples

问题:

https://my.oschina.net/hxflar1314520/blog/1800035

https://blog.csdn.net/tingxuetage/article/details/80179772

 

 

crud

2、增加mapper代码		
    @Select("SELECT * FROM user")
    @Results({
        @Result(column = "create_time",property = "createTime")  //javaType = java.util.Date.class        
    })
    List<User> getAll();
  
    @Select("SELECT * FROM user WHERE id = #{id}")
    @Results({
    	 @Result(column = "create_time",property = "createTime")
    })
    User findById(Long id);

    @Update("UPDATE user SET name=#{name} WHERE id =#{id}")
    void update(User user);

    @Delete("DELETE FROM user WHERE id =#{userId}")
    void delete(Long userId);
 
@GetMapping("find_all")
	public Object findAll(){
       return JsonData.buildSuccess(userMapper.getAll());
	}
	
	@GetMapping("find_by_Id")
	public Object findById(long id){
       return JsonData.buildSuccess(userMapper.findById(id));
	}
	
	@GetMapping("del_by_id")
	public Object delById(long id){
	userMapper.delete(id);
       return JsonData.buildSuccess();
	}
	
	@GetMapping("update")
	public Object update(String name,int id){
		User user = new User();
		user.setName(name);
		user.setId(id);
		userMapper.update(user);
	    return JsonData.buildSuccess();
	}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智达教育‍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值