学习mybatis3的第8天
1、写好测试类:
package com.rtl.mybatis.test;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class MybatisTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream is = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(is);
}
@Test
public void test1() throws Exception{
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("mbg.xml");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
}
最核心的就是加载这个mbg.xml
2、查写好的mbg.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="DB2Tables" targetRuntime="MyBatis3Simple">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/mybatis?useSSL=false"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<javaModelGenerator targetPackage="com.rtl.mybatis.bean"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<sqlMapGenerator targetPackage="com.rtl.mybatis.dao"
targetProject=".\conf">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<javaClientGenerator type="XMLMAPPER" targetPackage="com.rtl.mybatis.dao"
targetProject=".\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<table tableName="tbl_dept" domainObjectName="Department"></table>
<table tableName="tbl_employee" domainObjectName="Employee"></table>
</context>
</generatorConfiguration>
注意写连接数据库的url的时候需要加这个:
3、看数据库的配置文件:mybatis-config.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="dbconfig.properties"></properties>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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/rtl/mybatis/dao/DepartmentMapper.xml"></mapper>
<mapper resource="com/rtl/mybatis/dao/EmployeeMapper.xml"></mapper>
</mappers>
</configuration>
注意mybatis-config.xml的注册mappers的写法。
dbconfig.properties:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false
jdbc.username=root
jdbc.password=root
5、lib目录
6、整个项目的架构(关键)
对应mgb.xml写的各个参数的值。
1、mgb.xml位置
2、dbconfig.properties和mybatis-config.xml
3、设置javaModelGenerator,也就是javaBean生成的位置:
4、设置sqlMapGenerator,也就是sql的映射配置文件。
5、javaClientGenerator,这就是指定,生成对应的mapper接口的位置。
6、测试好已经自动帮我们生成代码之后,现在测试一下,这些自动生成的代码,可以和DB进行交互吗?(关键)
@Test
public void test2() throws Exception{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
List<Employee> employees = mapper.selectAll();
for (Employee employee : employees) {
System.out.println(employee);
}
}
现在自动生成的都是数据库的简单版本,现在准备生成复杂一些的。
在mbg.xml里面:
targetRuntime=“MyBatis3Simple”
targetRuntime=“MyBatis3”
注意:准备重新生成的时候,最好把原先生成的文件删除掉。
之前自动生成的文件:
现在生成的:
会多一些Example的类。
例如:
查询员工名字中包含t的,且员工性别是1的。
@Test
public void test3() throws Exception{
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
SqlSession openSession = sqlSessionFactory.openSession();
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);
EmployeeExample employeeExample = new EmployeeExample();
employeeExample.createCriteria().andLastNameLike("%t%").andGenderEqualTo("1");
List<Employee> employees = mapper.selectByExample(employeeExample);
for (Employee employee : employees) {
System.out.println(employee);
}
}
至此Mybatis先学到这里。
然后去学习Spring,之后,在学习Spring整合Mybatis的章节。
https://www.bilibili.com/video/BV1by4y1Y7EN?p=60
但是这个学完之后,还只是停留在使用的层面,之后,有时间还是需要学习运行原理和源码的学习。