Mybatis

mybatis

MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

配置文件

MybatisConfig.xml

SSM中需要配置

  • 数据url

  • 数据库连接池

  • 映射文件

  • 事务

在SpringBoot中整合到property中了

Mapper.xml

namespace

接口绑定 和接口

就可以不用写DAO实现类,Mybatis会通过绑定自动找到要执行的sql语句。

resultMap

结果集对应到实体类的字段到属性映射

xml 方式

传统方式

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">  
   
 <!-- version: $Id$ -->  
 <configuration>  
     <!-- 引用JDBC属性的配置文件 -->  
     <properties resource="database.properties" />  
   
     <environments default="development">  
         <environment id="development">  
             <!-- 使用JDBC的事务管理 -->  
             <transactionManager type="JDBC" />  
             <!-- POOLED :JDBC连接对象的数据源连接池的实现,不直接支持第三方数据库连接池 -->  
             <dataSource type="POOLED">  
                 <property name="driver" value="${database.driver}" />  
                 <property name="url" value="${database.url}" />  
                 <property name="username" value="${database.username}" />  
                 <property name="password" value="${database.password}" />  
             </dataSource>  
         </environment>  
   
     </environments>  
   
     <!-- ORM映射文件 -->  
     <mappers>  
         <!-- 注解的方式 -->  
         <mapper class="com.iflytek.dao.mapper.AccountMapper" />  
         <!-- XML的方式 -->  
         <mapper resource="com/mashibing/dao/xml/AccountMapper.xml" />  
         <!-- 这里对于注解,还可以通过<package name="com.mashibing.dao.mapper"/> -->  
     </mappers>  
 </configuration>  

Service 配置

 public class AccountService {  
 ​
     public boolean insertAccount(Account account) {  
         boolean flag = false;  
         SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();  
         try {  
             accountMapper accountMapper = sqlSession.getMapper(AccountMapper.class);  
             int result = accountMapper.insert(student);  
             if (result > 0) {  
                 flag = true;  
             }  
             sqlSession.commit();  
         } finally {  
             sqlSession.close();  
         }  
         return flag;  
     }  
   
 ​
     public Student getAccountById(int id) {  
         SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();  
         try {  
             AccountMapper AccountMapper = sqlSession.getMapper(AccountMapper.class);  
             return AccountMapper.selectByPrimaryKey(id);  
         } finally {  
             sqlSession.close();  
         }  
     }  
   
 ​
     public List<Student> getAllStudents() {  
         SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();  
         try {  
             StudentMapper StudentMapper = sqlSession.getMapper(StudentMapper.class);  
             return StudentMapper.selectByExample(new StudentExample());  
         } finally {  
             sqlSession.close();  
         }  
     }  
   
 ​
     public boolean updateAccount(Account account) {  
         SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();  
         boolean flag = false;  
         try {  
             AccountMapper AccountMapper = sqlSession.getMapper(AccountMapper.class);  
             int result = AccountMapper.updateByPrimaryKey(Account);  
             if (result > 0) {  
                 flag = true;  
             }  
             sqlSession.commit();  
         } finally {  
             sqlSession.close();  
         }  
         return flag;  
   
     }  
   
  
     public boolean deleteAccount(int id) {  
         SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();  
         boolean flag = false;  
         try {  
             AccountMapper AccountMapper = sqlSession.getMapper(AccountMapper.class);  
             int result = AccountMapper.deleteByPrimaryKey(id);  
             if (result > 0) {  
                 flag = true;  
             }  
             sqlSession.commit();  
         } finally {  
             sqlSession.close();  
         }  
         return flag;  
     }  
   
 }  

与SpringBoot整合

引入依赖

 <?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.6.RELEASE</version>
         <relativePath/> <!-- lookup parent from repository -->
     </parent>
     <groupId>com.example</groupId>
     <artifactId>springboot03-mybatis</artifactId>
     <version>0.0.1-SNAPSHOT</version>
     <name>springboot03-mybatis</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>
             <groupId>org.mybatis.spring.boot</groupId>
             <artifactId>mybatis-spring-boot-starter</artifactId>
             <version>2.0.1</version>
         </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>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-devtools</artifactId>
         </dependency>
         
     </dependencies>
 ​
     <build>
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>
                 <artifactId>spring-boot-maven-plugin</artifactId>
             </plugin>
         </plugins>
     </build>
 ​
 </project>
 ​

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.mashibing.springboot.mapper.AccountMapper">
    
    <resultMap type="com.mashibing.springboot.mapper.Account" id="BaseResultMap">
    
     <result column="login_name" property="loginName"/>
     <result column="password" property="password"/>
    
    </resultMap>
    
    
     <insert id="save" parameterType="Account">
         INSERT INTO account(login_name,password)
         VALUES
         (
         #{loginName},#{password}
         )
     </insert>
     
     <select id="findAll" resultMap="BaseResultMap">
         select * from account
     </select>
     
 </mapper>
 ​
 ​
 ​

application.properties

 spring.datasource.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf8&useSSL=false&serverTimezone=UTC
 ##数据库用户名
 spring.datasource.username=root
 ##数据库密码
 spring.datasource.password=840416
 ​
 # 用来实例化mapper接口
 mybatis.type-aliases-package=com.mashibing.springboot.mapper
 # 对应的sql映射
 mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

AccountMapper

 package com.mashibing.springboot.mapper;
 ​
 import org.apache.ibatis.annotations.Mapper;
 ​
 @Mapper
 public interface AccountMapper {
 ​
     void save(Account account);
 }
 ​
 ​

Account

 ​
 public class Account {
     private int id;
     private String loginName;
     private String password;
     private String nickName;
     private int age;
     private String location;
     private int banlance;
     public int getId() {
 ​

显示日志

logging.level.com.mashibing.springboot.mapper=debug

注解查询

     @Select("select * from account1")
     List<Account> findAll();
 ​

查找mapper接口

在入口加入 MapperScan

@MapperScan("com.mashibing.springboot.mapper") public class Springboot03MybatisApplication {

每一个mapper接口上加入

@Mapper public interface AccountMapper {

Mapper 自动生成

eclipse插件 市场搜素

MyBatis Generator

图形化

GitHub - zouzg/mybatis-generator-gui: mybatis-generator界面工具,让你生成代码更简单更快捷

分页查询

依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>

Service

	public Object findPage(int pageNum, int pageSize) {

		PageHelper.startPage(pageNum, pageSize);
		AccountExample example = new AccountExample();
		return mapper.selectByExample(example );
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值