springmvc mybatis項目 創建 和 mybatis Genertor gui 使用教程

創建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

圖形化

https://github.com/zouzg/mybatis-generator-gui

把這個項目下載下來. 引入springtool. 運行

分頁查詢

依賴

<!-- 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 );
	}

使用 mybatis generator gui

https://github.com/zouzg/mybatis-generator-gui

把這個項目下載下來. 引入springtool. 運行選項java Application

選擇MainUi

剩下的步驟 按照
https://github.com/zouzg/mybatis-generator-gui
這裏這麼做就行

點擊一下測試鏈接.
上面鏈接不成功.是因爲數據庫用的是mysql 但是我安裝的是MySql8 換一下就好了.

新建一張表 menu

四個字段 權限管理表

然後使用gui 生成代碼

MyBatisBaseDao.java 常用的基礎的查詢
MenuMapper.java
MenuExample.java 複雜查詢
Menu.java 實體類

MenuMapper.xml 映射xml

把這幾個文件拷貝到對應的項目裏面就行了

項目地址 springmvc04 這個

https://github.com/liudao01/SpringStudy

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章