自動生成代碼工具:mybatis-generator
Mybatis-Generator是一個可以用來生成Mybatis dao,entity,Mapper的檔案的一個工具,在項目中可以省去我們很多重複的工作。
1、在main/resource中加入配置檔案 generatorConifg.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>
<context id="MySQLTables" targetRuntime="MyBatis3">
<!-- 資料庫驅動 使用者名 密碼 資料庫名 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1/cars" userId="root" password="a">
</jdbcConnection>
<!-- 實體類包名 targetPackage指定生成在那個包下 targetProject指定在那個目錄下生成該包-->
<javaModelGenerator targetPackage="com.yc.cars.bean"
targetProject="src/main/java">
</javaModelGenerator>
<!-- Dao類包名 -->
<sqlMapGenerator targetPackage="com.yc.cars.dao"
targetProject="src/main/java">
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.yc.cars.dao" targetProject="src/main/java">
</javaClientGenerator>
<!-- column告訴jdbc哪一個字段是自增列,儲存以後mysql自動生成在傳回這個自增列的值 -->
<table tableName="car">
<generatedKey column="id" sqlStatement="mysql" />
</table>
<table tableName="driver">
<generatedKey column="id" sqlStatement="mysql" />
</table>
<table tableName="user_info">
<generatedKey column="id" sqlStatement="mysql" />
</table>
<table tableName="order">
<generatedKey column="id" sqlStatement="mysql" />
</table>
</context>
</generatorConfiguration>
注需要修改的是資料庫驅動類、資料庫表名、資料庫使用者名、資料庫密碼、各類檔案需要生成在哪個目錄(targetProject)下和在該目錄下的哪個包(targetPackage)
2、在pom.xml中配置generator插件 和加入mysql-connector-java依賴
<plugins>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
</dependencies>
</plugin>
</plugins>
3、運作指令:
在工程右鍵-》Run as-》Maven build-》輸入指令:mybatis-generator:generate
4、通過自動生成的代碼無需手動書寫資料庫事務語句
新版本自動生成的類有Mapper和Example,Example類用于封裝定義資料庫語句的類
具體用法:這裡用到是模拟登陸功能
測試類:
@RunWith(SpringRunner.class)
@ContextConfiguration("/beans.xml")
public class UserInfoMapperTest {
@Resource
private UserInfoMapper umapper;
@Test
public void test()
{
//查詢所有
/*umapper.selectByPrimaryKey(1);
umapper.selectByExample(null);*/
//查詢指定使用者名
UserInfoExample uie=new UserInfoExample();
uie.createCriteria().andNameEqualTo("張三");
umapper.selectByExample(uie);
uie=new UserInfoExample();
Criteria c=uie.createCriteria();
c.andNameLike("%三%");
c.andPwdEqualTo("123");
c.andEmailLike("%123%");
umapper.selectByExample(uie);
}
}
5、實作
1、建立相應的Example執行個體對象UserInfoExample example=new UserInfoExample();
2、由example調用createCriteria()建立Criteria執行個體 Criteria c=uie.createCriteria();
Criteria可以調用多種為實體類屬性定義的條件方法 :
如 c.andNameLike("%三%");
c.andPwdEqualTo(“123”);
c.andEmailLike("%123%");
3、Criteria執行個體調用之後,再由UserInfoMapper調用Example的方法,此處要以example為方法參數
如:umapper.selectByExample(uie); 通過uie定義的條件查詢
4、注:Example類中帶Selecttive方法表示隻更新非空字段
updateByPrimaryKeySelective會對字段進行判斷再更新(如果為Null就忽略更新),如果你隻想更新某一字段,可以用這個方法。
updateByPrimaryKey對你注入的字段全部更新,如果為字段不更新,資料庫的值就為null。sql語句: