mybatis基本环境搭建

一,首先加入mybatis-3.2.3.jarojdbc6.jar到项目中的lib文件夹下。

 

二,

 

针对sql建立以上结构,

 

1, Configuration.xml mybatis的一个配置文件:

<?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>

<!-- 默认是在src目录下 -->

   <properties resource="properties/jdbc.properties"></properties>

    <!--  <settings>

  <setting name="cacheEnabled" value="true"/>

 lazyLoadingEnabled:true使用延迟加载,false禁用延迟加载。默认为true;

                aggressiveLazyLoading:true启用时,当延迟加载开启时访问对象中一个懒对象属性时,                                                                                             将完全加载这个对象的所有懒对象属性。

                                     false,当延迟加载时,按需加载对象属性(即访问对象中一个懒对象属性,不会加载对象中其他的懒对象属性)。

                                                                                                       默认为true 

  <setting name="lazyLoadingEnabled" value="true"/>

  <setting name="aggressiveLazyLoading" value="false"/>

</settings>-->

<typeAliases>

  <!-- 别名 -->

  <typeAlias alias="Emp" type="hwt.pojo.Emp"/>

  <typeAlias alias="Dep" type="hwt.pojo.Dep"/>

   </typeAliases>

   

   <!-- 配置环境,可以配置多个环境,默认default指定默认环境 -->

   <environments default="development">

<environment id="development">

<!-- 事务管理有JDBC和MANAGED两种 -->

<transactionManager type="JDBC" />

<!-- 数据源UNPOOLED,POOLED,JNDI -->

<dataSource type="POOLED">

<property name="driver" value="${driverClassName}" />

<property name="url" value="${url}" />

<property name="username" value="${username}" />

<property name="password" value="${password}" />

</dataSource>

</environment>

</environments>

<!-- 对于mapper.xml映射文件的配置 -->

<mappers>

<mapper resource="hwt/Mapper/EmpMapper.xml"/>

<mapper resource="hwt/Mapper/DepMapper.xml"/>

</mappers>

</configuration>

 

2pojo

Emp:

package hwt.pojo;

public class Emp {

private int empid;

private String empname;

private Dep dep//部门类,作为多对一的字段

public int getEmpid() {

return empid;

}

public void setEmpid(int empid) {

this.empid = empid;

}

public String getEmpname() {

return empname;

}

public void setEmpname(String empname) {

this.empname = empname;

}

public Dep getDep() {

return dep;

}

public void setDep(Dep dep) {

this.dep = dep;

}

}

 

Dep:

package hwt.pojo;

import java.util.List;

public class Dep {

private int depid;

private String depname;

private List<Emp> emps//作为一对多的字段使用

public int getDepid() {

return depid;

}

public void setDepid(int depid) {

this.depid = depid;

}

public String getDepname() {

return depname;

}

public void setDepname(String depname) {

this.depname = depname;

}

public List<Emp> getEmps() {

return emps;

}

public void setEmps(List<Emp> emps) {

this.emps = emps;

}

 

}

 

 

3, 每一个Mapper.xml对应于一个mapper接口

 

EmpMapper.jara

public interface EmpMapper {

/**

 * 得到所有的emp

 * @return

 */

public List<Emp> getAllEmps();

/**

 * 根据empId得到Emp对象

 * @param empId

 * @return

 */

public List<Emp> getEmpsByDepId(int depId);

/**

 * 根据EmpId得到Emp对象

 * @param empid

 * @return

 */

public Emp getEmpsById(@Param("empid")int empid);

/**

 * 根据empName模糊查询

 * @param empname

 * @return

 */

public List<Emp> getEmpsByName(@Param("empname")String empname);

}

 

EmpMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>    

<!DOCTYPE mapper    

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="hwt.Mapper.EmpMapper">

 

   <resultMap id="empResult" type="Emp"> 

  <id property="empid" column="empid" />

  <result property="empname" column="empname"/>

  <!-- 多对一的关系,注意resultMap的名字为 引用的namespace+resultMap的Id -->

  <association property="dep" column="depid" javaType="Dep" resultMap="hwt.Mapper.DepMapper.depResult"/>

   </resultMap>

   

   <select id="getAllEmps" resultMap="empResult">

<![CDATA[

select * from emp e join dep d on e.depid = d.depid

]]>

  </select>

 

  <select id="getEmpsByDepId" parameterType="int" resultType="Emp">

    select * from emp where depid = #{id}

   </select>

   

   <select id="getEmpsById" parameterType="int" resultType="Emp">

    select * from emp where empid = ${empid}

   </select>

   

   <select id="getEmpsByName" parameterType="string" resultType="Emp">

        <!-- 模糊查询的方法:1,使用${};

                       2,CONCAT(CONCAT('%', #{empname}), '%'); -->

    select * from emp where empname like '%${empname}%'

   </select>

</mapper> 

 

DepMapper.java

package hwt.Mapper;

public interface DepMapper {

}

 

DepMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>    

<!DOCTYPE mapper    

    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"    

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="hwt.Mapper.DepMapper">

<resultMap type="Dep" id="depResult">

<id property="depid" column="DEPID"/>

<result property="depname" column="DEPNAME"/>

<!-- 一对多映射,property:pojo类中对应的属性,ofType:对应的类型,cloumn:根据此字段来进行查询,select:根据什么来查询 -->

<collection property="emps" ofType="Emp" column="depid" select="hwt.Mapper.EmpMapper.getEmpsByDepId"></collection>

</resultMap>

</mapper> 

 

 

sessionFactoryUtils:

 

public class SessionFactoryUtils {

private static SqlSessionFactoryBuilder sessionFactoryBuilder;

private static SqlSessionFactory sessionFactory;

static{

try {

Reader reader = Resources.getResourceAsReader("properties/configuration.xml");

sessionFactoryBuilder = new SqlSessionFactoryBuilder();

sessionFactory = sessionFactoryBuilder.build(reader,"development");

catch (IOException e) {

e.printStackTrace();

}

}

/**

 * 得到sessionFactory

 * @return

 */

public static SqlSessionFactory getSessionFactory(){

return sessionFactory;

}

/**

 * 得到sqlSession

 * @return

 */

public static SqlSession getSession(){

return sessionFactory.openSession();

}

}

 

 

测试类:

public class Test {

public static void main(String[] args) {

SqlSession session = SessionFactoryUtils.getSession();

//List<Emp> emps = session.selectList("hwt.Mapper.EmpMapper.selectAllEmp");

EmpMapper empMapper = session.getMapper(EmpMapper.class);

List<Emp> emps = empMapper.getAllEmps();

for (Emp emp : emps) {

System.out.println(emp.getDep().getDepname());

}

System.out.println("++++++");

Emp emp = empMapper.getEmpsById(1);

System.out.println(emp.getEmpname());

System.out.println("++++++");

List<Emp> emps2 = empMapper.getEmpsByName("小");

for (Emp emp2 : emps2) {

System.out.println(emp2.getEmpname());

}

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值