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 生成代码字段名默认按驼峰命名,可否设置

使用MyBatis Generator自动生成代码

使用maven的mybatis-generator代码生成器插件生成实体类mapper配置文件和mapper接口(使用idea)

generator生成文件的使用

使用MyBatis Generator自动生成MyBatis的代码

mybaits generator 代码自动生成工具使用