Mybatis配置、逆向工程自动生成代码(CRUD案例)
目的:
mybatis简介
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
搭建mybatis环境
1、创建maven工程
2、导入相关pom依赖
3、Mybatis相关插件安装
Free mybatis plugin
Mybatis generater
mybatis tools
maven helper
4、Mybatis.cfg.xml配置
Pom.xml依赖
- <?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/maven-v4_0_0.xsd">
- <parent>
- <artifactId>module</artifactId>
- <groupId>com.huangting</groupId>
- <version>1.0-SNAPSHOT</version>
- </parent>
- <modelVersion>4.0.</modelVersion>
- <packaging>war</packaging>
- <name>mybatis</name>
- <artifactId>mybatis</artifactId>
- <properties>
- <maven.compiler.source>1.8</maven.compiler.source>
- <maven.compiler.target>1.8</maven.compiler.target>
- </properties>
- <dependencies>
- <!-- ********************** junit单元测试依赖 ********************** -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- <scope>test</scope>
- </dependency>
- <!-- ********************** Java Servlet API ********************** -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>4.0.</version>
- <scope>provided</scope>
- </dependency>
- <!-- ********************** Mybatis依赖 ********************** -->
- <dependency>
- <groupId>org.mybatis</groupId>
- <artifactId>mybatis</artifactId>
- <version>3.4.</version>
- </dependency>
- <!-- ********************** Mysql JDBC驱动 ********************** -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.</version>
- </dependency>
- <!-- ********************** 日志配置 ********************** -->
- <!--记得修改mybatis.cfg.xml添加如下内容-->
- <!--<setting name="logImpl" value="LOG4J2"/>-->
- <!--核心log4j2jar包-->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.9.</version>
- </dependency>
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-api</artifactId>
- <version>2.9.</version>
- </dependency>
- <!--web工程需要包含log4j-web,非web工程不需要-->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-web</artifactId>
- <version>2.9.</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
- <build>
- <resources>
- <!--解决mybatis-generator-maven-plugin运行时没有将XxxMapper.xml文件放入target文件夹的问题-->
- <resource>
- <directory>src/main/java</directory>
- <includes>
- <include>**/*.xml</include>
- </includes>
- </resource>
- <!--解决mybatis-generator-maven-plugin运行时没有将jdbc.properites文件放入target文件夹的问题-->
- <resource>
- <directory>src/main/resources</directory>
- <includes>
- <include>jdbc.properties</include>
- <include>*.xml</include>
- </includes>
- </resource>
- </resources>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.mybatis.generator</groupId>
- <artifactId>mybatis-generator-maven-plugin</artifactId>
- <version>1.3.2</version>
- <dependencies>
- <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.44</version>
- </dependency>
- </dependencies>
- <configuration>
- <overwrite>true</overwrite>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.mortbay.jetty</groupId>
- <artifactId>maven-jetty-plugin</artifactId>
- <version>6.1.7</version>
- <configuration>
- <connectors>
- <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
- <port>8888</port>
- <maxIdleTime>30000</maxIdleTime>
- </connector>
- </connectors>
- <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}
- </webAppSourceDirectory>
- <contextPath>/</contextPath>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
- </project>
Jdbc.properties 连接数据库配置文件
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/t224?useUnicode=true&characterEncoding=UTF-8
- jdbc.username=root
- jdbc.password=
接下来安装以下插件
Free mybatis plugin
Mybatis generater
mybatis tools
maven helper
mybatis.cfg.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">
- <configuration>
- <!-- 引入外部配置文件 -->
- <properties resource="jdbc.properties"/>
- <settings>
- <setting name="logImpl" value="LOG4J2"/>
- </settings>
- <!-- 别名 -->
- <typeAliases>
- <!--<typeAlias type="com.huangting.model.Book" alias="Book"/>-->
- </typeAliases>
- <!-- 配置mybatis运行环境 -->
- <environments default="development">
- <environment id="development">
- <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
- <transactionManager type="jdbc"/>
- <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
- <!-- POOLED 表示支持JDBC数据源连接池 -->
- <!-- UNPOOLED 表示不支持数据源连接池 -->
- <!-- JNDI 表示支持外部数据源连接池 -->
- <dataSource type="POOLED">
- <property name="driver"
- value="${jdbc.driver}"/>
- <property name="url"
- value="${jdbc.url}"/>
- <property name="username" value="${jdbc.username}"/>
- <property name="password" value="${jdbc.password}"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <!--<mapper resource="com/haungting/mapper/BookMapper.xml"/>-->
- </mappers>
- </configuration>
基于ssm逆向工程的使用
配置generatorConfig.xml
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
- "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
- <generatorConfiguration>
- <!-- 引入配置文件 -->
- <properties resource="jdbc.properties"/>
- <!--指定数据库jdbc驱动jar包的位置-->
- <classPathEntry location="E:\Maven\Maven_cang\mysql\mysql-connector-java\5.1.44\mysql-connector-java-5.1.44.jar"/>
- <!-- 一个数据库一个context -->
- <context id="infoGuardian">
- <!-- 注释 -->
- <commentGenerator>
- <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
- <property name="suppressDate" value="true"/> <!-- 是否生成注释代时间戳 -->
- </commentGenerator>
- <!-- jdbc连接 -->
- <jdbcConnection driverClass="${jdbc.driver}"
- connectionURL="${jdbc.url}" userId="${jdbc.username}" password="${jdbc.password}"/>
- <!-- 类型转换 -->
- <javaTypeResolver>
- <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
- <property name="forceBigDecimals" value="false"/>
- </javaTypeResolver>
- <!-- 01 指定javaBean生成的位置 -->
- <!-- targetPackage:指定生成的model生成所在的包名 -->
- <!-- targetProject:指定在该项目下所在的路径 -->
- <javaModelGenerator targetPackage="com.huangting.model"
- targetProject="src/main/java">
- <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
- <property name="enableSubPackages" value="false"/>
- <!-- 是否对model添加构造函数 -->
- <property name="constructorBased" value="true"/>
- <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
- <property name="trimStrings" value="false"/>
- <!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
- <property name="immutable" value="false"/>
- </javaModelGenerator>
- <!-- 02 指定sql映射文件生成的位置 -->
- <sqlMapGenerator targetPackage="com.huangting.mapper"
- targetProject="src/main/java">
- <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
- <property name="enableSubPackages" value="false"/>
- </sqlMapGenerator>
- <!-- 03 生成XxxMapper接口 -->
- <!-- type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象 -->
- <!-- type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象 -->
- <!-- type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口 -->
- <javaClientGenerator targetPackage="com.huangting.mapper"
- targetProject="src/main/java" type="XMLMAPPER">
- <!-- 是否在当前路径下新加一层schema,false路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] -->
- <property name="enableSubPackages" value="false"/>
- </javaClientGenerator>
- <!-- 配置表信息 -->
- <!-- schema即为数据库名 -->
- <!-- tableName为对应的数据库表 -->
- <!-- domainObjectName是要生成的实体类 -->
- <!-- enable*ByExample是否生成 example类 -->
- <!--<table schema="" tableName="t_book" domainObjectName="Book"-->
- <!--enableCountByExample="false" enableDeleteByExample="false"-->
- <!--enableSelectByExample="false" enableUpdateByExample="false">-->
- <!--<!– 忽略列,不生成bean 字段 –>-->
- <!--<!– <ignoreColumn column="FRED" /> –>-->
- <!--<!– 指定列的java数据类型 –>-->
- <!--<!– <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> –>-->
- <!--</table>-->
- <table schema="" tableName="t_mvc_book" domainObjectName="Book"
- enableCountByExample="false" enableDeleteByExample="false"
- enableSelectByExample="false" enableUpdateByExample="false">
- <!-- 忽略列,不生成bean 字段 -->
- <!-- <ignoreColumn column="FRED" /> -->
- <!-- 指定列的java数据类型 -->
- <!-- <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> -->
- </table>
- </context>
- </generatorConfiguration>
配置maven运行generator命令
从这里面去配置maven
- mybatis-generator:generate -e
- 然后点击运行,自动生成文件
Mybatis增删改查案例
- SessionUtil.java
- package com.huangting.util;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- /**
- * @author 黄大娘
- * @company dogson有限公司
- * @create 2019-09-20 5:05
- */
- public class SessionUtil {
- private static SqlSessionFactory sessionFactory;
- private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>();
- static {
- sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream("/mybatis.cfg.xml"));
- }
- public static SqlSession openSession() {
- SqlSession session = threadLocal.get();
- if (null == session) {
- session = sessionFactory.openSession();
- threadLocal.set(session);
- }
- return session;
- }
- public static void main(String[] args) {
- SqlSession session = openSession();
- System.out.println(session.getConnection());
- session.close();//关闭session
- // System.out.println(session.getConnection());
- }
- }
BookService.java
- package com.huangting.service;
- import com.huangting.model.Book;
- /**
- * @author 黄大娘
- * @company dogson有限公司
- * @create 2019-09-20 5:08
- */
- public interface Bookservice {
- int deleteByPrimaryKey(Integer bid);
- int insert(Book record);
- int insertSelective(Book record);
- Book selectByPrimaryKey(Integer bid);
- int updateByPrimaryKeySelective(Book record);
- int updateByPrimaryKey(Book record);
- }
- BookServiceImpl.java
- package com.huangting.service.ipml;
- import com.huangting.mapper.BookMapper;
- import com.huangting.model.Book;
- import com.huangting.service.Bookservice;
- /**
- * @author 黄大娘
- * @company dogson有限公司
- * @create 2019-09-20 5:12
- */
- public class BookServiceImpl implements Bookservice {
- private BookMapper bookMapper;
- public BookMapper getBookMapper() {
- return bookMapper;
- }
- public void setBookMapper(BookMapper bookMapper) {
- this.bookMapper = bookMapper;
- }
- @Override
- public int deleteByPrimaryKey(Integer bid) {
- return bookMapper.deleteByPrimaryKey(bid);
- }
- @Override
- public int insert(Book record) {
- return bookMapper.insert(record);
- }
- @Override
- public int insertSelective(Book record) {
- return bookMapper.insertSelective(record);
- }
- @Override
- public Book selectByPrimaryKey(Integer bid) {
- return bookMapper.selectByPrimaryKey(bid);
- }
- @Override
- public int updateByPrimaryKeySelective(Book record) {
- return 0;
- }
- @Override
- public int updateByPrimaryKey(Book record) {
- return 0;
- }
- }
- BookServiceImplTest.java
- package com.huangting.test;
- import com.huangting.mapper.BookMapper;
- import com.huangting.model.Book;
- import com.huangting.service.Bookservice;
- import com.huangting.service.ipml.BookServiceImpl;
- import com.huangting.util.SessionUtil;
- import org.apache.ibatis.session.SqlSession;
- import org.junit.After;
- import org.junit.Before;
- import org.junit.Test;
- /**
- * @author 黄大娘
- * @company dogson有限公司
- * @create 2019-09-20 5:14
- */
- public class BookServiceImplTest {
- private Bookservice bookService;
- private SqlSession sqlSession;
- @Before
- public void setUp() throws Exception {
- BookServiceImpl bookServiceImpl = new BookServiceImpl();
- sqlSession = SessionUtil.openSession();
- bookServiceImpl.setBookMapper(sqlSession.getMapper(BookMapper.class));
- this.bookService = bookServiceImpl;
- }
- @After
- public void tearDown() throws Exception {
- sqlSession.commit();
- sqlSession.close();
- }
- @Test
- public void insert() {
- Book book = new Book();
- book.setBname("zzz");
- book.setPrice(12.3);
- book.setBid(5);
- int insert = bookService.insert(book);
- }
- @Test
- public void selectByPrimaryKey() {
- Book book = this.bookService.selectByPrimaryKey(66);
- System.out.println(book);
- }
- }
效果:
查询
新增:
谢谢观看!!
Mybatis配置、逆向工程自动生成代码(CRUD案例)的更多相关文章
- 02 使用Mybatis的逆向工程自动生成代码
1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...
- 使用Mybatis的逆向工程自动生成代码
1.逆向工程的作用 Mybatis 官方提供了逆向工程,可以针对数据库表自动生成Mybatis执行所需要的代码(包括mapper.xml.Mapper.java.pojo). 2.逆向工程的使用方法 ...
- springboot(十三):springboot结合mybatis generator逆向工程自动生成代码
错信息generate failed: Exception getting JDBC Driver: com.mysql.jdbc.Driver 上网查了一下,发现原来是generator这个插件在运 ...
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
- MyBatis框架之mybatis逆向工程自动生成代码
http://www.jb51.net/article/82062.htm Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们 ...
- MyBatis使用Generator自动生成代码
MyBatis中,可以使用Generator自动生成代码,包括DAO层. MODEL层 .MAPPING SQL映射文件. 第一步: 配置好自动生成代码所需的XML配置文件,例如(generator. ...
- Eclipse 使用mybatis generator插件自动生成代码
Eclipse 使用mybatis generator插件自动生成代码 标签: mybatis 2016-12-07 15:10 5247人阅读 评论(0) 收藏 举报 .embody{ paddin ...
- Spring Boot MyBatis 通用Mapper 自动生成代码
一.在pom.xml文件中进入mybatis自动生成代码相关的jar包: 注意: <configurationFile>标签中配置的是“generatorConfig.xml”文件位置. ...
- 回顾一下MyBatis逆向工程——自动生成代码
前言 最近做的项目(SSM+Shiro)的数据库表已经创建完成,一共有15张表,如果我们一个个去写pojo/bean的代码以及各种sql语句的话未免太过麻烦而且很容易出错,这个时候我们就需要MyBat ...
随机推荐
- 做动画animation--matplotlib--python2和3通用代码
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/weixin_42053726/artic ...
- linux系统中如何查看acpi信息?
答: 进入/sys/firmware/acpi/tables, 然后输入tree命令即可查看acpi信息
- Jupyter Notebook in a virtual environment (virtualenv)
$ python -m venv projectname $ source projectname/bin/activate (venv) $ pip install ipykernel (venv) ...
- OctetString 转String
/// <summary> /// OctetString转时间 /// </summary> /// <param name="ss">字符串 ...
- Vue事件 定义方法执行方法 获取数据 改变数据 执行方法传值 以及事件对象
<template> <div id="app"> <!-- <img v-bind:src='url' /> <img :src= ...
- vue plupload 的使用
1. 首选npm安装plupload 2. 阿里云OSS PHP 安全上传 <template> <div class="imgUpload"> aaa ...
- LinkedHashMap和hashMap和TreeMap的区别
推荐博客:https://www.jianshu.com/p/8f4f58b4b8ab 区别: LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的. HashMa ...
- 最基础的Python的socket编程入门教程
最基础的Python的socket编程入门教程 本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在 ...
- POJ 3903 Stock Exchange 最长上升子序列入门题
题目链接:http://poj.org/problem?id=3903 最长上升子序列入门题. 算法时间复杂度 O(n*logn) . 代码: #include <iostream> #i ...
- -webkit-overflow-scrolling : touch 快速滚动 回弹 效果
现在很多for Mobile的HTML5网页内都有快速滚动和回弹的效果,看上去和原生app的效率都有得一拼. 要实现这个效果很简单,只需要在元素上加一行css代码即可: -webkit-overflo ...