generator生成文件的使用
Posted Recently 祝祝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了generator生成文件的使用相关的知识,希望对你有一定的参考价值。
generator代码生成器,代码时生成了,那应该怎么用呢?又应该怎么添加相应需求的配置呢?
使用步骤:
第一步
新建一个Java项目把所有的复制文件都复制在里面:
第二步:
创建一个核心配置文件,写入连接数据库以及读取其他配置文件的信息
注意:配置文件要放在源文件包下面,切记放在文件夹下面或者一个普通的包下面
<?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>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
<environments default="development">
<environment id="development">
<!-- 事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mytest"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!-- 配置文件映射 -->
<mappers>
<mapper resource="mappers/DeptDOMapper.xml"/>
<mapper resource="mappers/EmpDOMapper.xml"/>
<mapper resource="mappers/EmpDOMapper.xml"/>
</mappers>
</configuration>
第三步:
写一个工具类,加载配置文件
package com.shimmer.utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
private static SqlSessionFactory factory =null;
/**
* 静态块自动加载配置文件,建立session工厂
*/
static {
try
{
InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");
factory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e)
{
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
/**
* 静态方法,开启会话,
* @return SqlSession
*/
public static SqlSession getSqlsession() {
//提交方式FALSE为不自动提交,默认也是不自动提交
return factory.openSession(false);
}
public static void closeSqlsession(SqlSession session) {
if (session!=null)
{
session.close();
}
}
}
第四步:
应用,com.shimmer.dao,dao包,俗称dao层全部都是接口类可以看到这个接口里有什么自动生成的方法,如果不能满足需求需要自己添加写入配置文件中
//查询记录总数
long countByExample(DeptVOExample example);
//根据条件删除
int deleteByExample(DeptVOExample example);
//根据主键删除
int deleteByPrimaryKey(Integer deptno);
//添加对象信息(null不过滤)
int insert(DeptVO record);
//添加对象信息(null过滤)
int insertSelective(DeptVO record);
//综合查询 条件 排序 去重 "分页"
List<DeptVO> selectByExample(DeptVOExample example);
//根据主键查找
DeptVO selectByPrimaryKey(Integer deptno);
//根据条件修改记录(null过滤)
int updateByExampleSelective(@Param("record") DeptVO record, @Param("example") DeptVOExample example);
//根据条件修改记录(null不过滤)
int updateByExample(@Param("record") DeptVO record, @Param("example") DeptVOExample example);
//根据主键修改记录(null过滤)
int updateByPrimaryKeySelective(DeptVO record);
//根据主键修改记录(null不过滤)
int updateByPrimaryKey(DeptVO record);
juint测试接口:
SqlSession sqlSession = null;
try
{
sqlSession = MybatisUtils.getSqlSession();
DeptDOMapper deptDOMapper = sqlSession.getMapper(DeptDOMapper.class);
Integer deptno=10;
//按照主键查找值
// System.out.println(deptDOMapper.selectByPrimaryKey(deptno));
} catch (Exception e)
{
e.printStackTrace();
}
}finally {
MybatisUtils.closeSqlSession(sqlSession);
}
Example类包含一个内部静态类 Criteria,利用Criteria我们可以在类中根据自己的需求动态生成sql where字句,不用我们自己再修改mapper文件添加或者修改sql语句了,能节省很多写sql的时间。
ExampleDemo
public class UsingTest {
// 自动生成的接口实现
@Test
public void test() {
SqlSession sqlSession = null;
try
{
sqlSession = MybatisUtils.getSqlSession();
DeptDOMapper deptDOMapper = sqlSession.getMapper(DeptDOMapper.class);
//根据Example实例调用接口
DeptVOExample example = new DeptVOExample();
Criteria criteria = example.createCriteria();
Criteria criteria1 = example.createCriteria();
//根据Example查询信息
//模糊查询姓名
Criteria xList= criteria.andDnameLike("%S%");
criteria.andLocLike("%A%");
//查找int类型的值在10-40之间的部门信息
criteria.andDeptnoBetween(10, 40);
criteria1.andDnameLike("%A%");
//查找int类型的值在10-40之间的部门信息
criteria1.andDeptnoBetween(10, 40);
//两实例条件查询用or隔开
example.clear();
example.or(criteria);
example.or(criteria1);
//去重
example.setDistinct(true);
//排序
String orderByClause ="deptno desc";
example.setOrderByClause(orderByClause);
System.out.println(deptDOMapper.selectByExample(example));
} catch (Exception e)
{
e.printStackTrace();
}finally {
MybatisUtils.closeSqlSession(sqlSession);
}
}
}
第五步:
若自动生成的代码不能满足需求时,自定义方法并实现
多对一连接分页:
实现:
public class UsingTest {
// 自动生成的接口实现
@Test
public void testEmp(){
SqlSession sqlSession = null;
try
{
sqlSession = MybatisUtils.getSqlSession();
EmpDOMapper empDOMapper = sqlSession.getMapper(EmpDOMapper.class);
int index=2;
int size=5;
EmpVOExample example = new EmpVOExample();
example.setStart((index-1)*size);
example.setLimit(size);
for(EmpVO empVO : empDOMapper.selectByExample1(example)) {
System.out.println (empVO.getEname()+"\\t\\t"+empVO.getDeptVO().getDname());
}
} catch (Exception e)
{
e.printStackTrace();
}finally {
MybatisUtils.closeSqlSession(sqlSession);
}
}
}
添加接口方法:
pojo类中添加;
Example类中:
配置文件:
在配置文件中直接加入配置代码即可,新增方法
<resultMap id="JoinResultMap" type="com.shimmer.pojo.EmpVO">
<id column="EMPNO" jdbcType="INTEGER" property="empno" />
<result column="ENAME" jdbcType="VARCHAR" property="ename" />
<result column="JOB" jdbcType="VARCHAR" property="job" />
<result column="MGR" jdbcType="INTEGER" property="mgr" />
<result column="HIREDATE" jdbcType="TIMESTAMP" property="hiredate" />
<result column="SAL" jdbcType="INTEGER" property="sal" />
<result column="COMM" jdbcType="INTEGER" property="comm" />
<result column="DEPTNO" jdbcType="INTEGER" property="deptno" />
<association property="deptVO" javaType="com.shimmer.pojo.DeptVO">
<id column="DEPTNO" jdbcType="INTEGER" property="deptno" />
<result column="DNAME" jdbcType="VARCHAR" property="dname" />
<result column="LOC" jdbcType="VARCHAR" property="loc" />
</association>
</resultMap>
<sql id="Join_Column_List">
EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, emp.DEPTNO deptno1,dept.deptno deptno2 ,dname,loc
</sql>
<select id="selectByExample1" parameterType="com.shimmer.pojo.EmpVOExample" resultMap="JoinResultMap" >
select
<if test="distinct">
distinct
</if>
<include refid="Join_Column_List"/>
from emp left join dept on emp.deptno=dept.deptno
<if test="_parameter !=null">
<include refid="Example_Where_Clause"/>
</if>
<if test="orderByClause !=null">
order by ${orderByClause}
</if>
<if test="start !=null and limit!=null">
limit ${start},${limit}
</if>
</select>
结果:
end>>>>
不经历风雨,怎么见彩虹。
奋斗吧青年!!!!
以上是关于generator生成文件的使用的主要内容,如果未能解决你的问题,请参考以下文章
mybatis-generator 生成代码字段名默认按驼峰命名,可否设置
使用maven的mybatis-generator代码生成器插件生成实体类mapper配置文件和mapper接口(使用idea)