MyBatis数据库操作总结

1. Namespace

1.1. 当前XxxMapper.xml文件针对哪个接口

1.2. 接口写全称

2. 配置文件实现接口的步骤

2.1. 通过配置select,insert,update,delete节点并拼写sql语句实现接口

2.2. ID 方法名

2.3. parameterType 接口方法的参数类型(如果方法有多个参数,则可以省略)

3. 复杂参数的接口方法的映射配置

3.1. 一个参数

3.1.1. 基本类型

Emp findEmpById(

//为接口方法参数命别名,方便在映射文件中使用#{别名}代表传入的参数值

@Param("abcd") int id);

<select id="findEmpById" parameterType="int" resultMap="empMap">

<!-- 接口方法参数没有别名情况下,#{任意字符} -->

select * from emp where empid=#{abcd}

</select>

3.1.2. 对象类型

Int updateEmp(Emp emp);

<update id=”updateEmp” parameterType=”com.entity.Emp”>

Update emp set ename=#{emp.ename} where empid=#{emp.empid}

</update>

3.2. 多个参数

List<Emp> findEmpByCondition(

@Param("empid")

int id,

@Param("emp")

Emp emp);

<select id="findEmpByCondition" resultMap="empMap">

<!-- 如果多个参数中存在对象类型,则使用#{别名.属性名} -->

select * from emp where empid=#{empid} and ename=#{emp.name}

</select>

 

Emp login(int id,String name);

<select id="login" resultMap="empMap">

select * from emp where empid=#{0} and ename=#{1}

</select>

 

Emp login(

@Param("empid")

int id,

@Param("ename")

String name);

<select id="login" resultMap="empMap">

select * from emp where empid=#{empid} and ename=#{ename}

</select>

4. ResultMap和ResultType

4.1. ResultMap 程序员根据业务需要自定义的属性名与列名的映射关系,如果属性名与列名不一致

4.2. ResultType 接口方法返回值集合的元素类型,一般就是实体类的类型

4.3. ResultMap可以根据需要,配置多个映射方案

5. Mybatis实现分页查询

5.1. 设计接口方法

List<Emp> findEmpByCondition2(HashMap map);

5.2. XxxMapper.xml

<!-- 将需要传递到sql语句的所有参数都通过键值对方式由外界传递进来 -->

<select id="findEmpByCondition2" resultMap="empMap">

SELECT * FROM (

        SELECT e.*,ROWNUM r FROM emp e

        WHERE e.ename like #{eu.name}

        and e.hiredate >= #{eu.startDate}

        and e.hiredate <= #{eu.endDate}

        and e.deptid=#{eu.deptid}

        and ROWNUM <=#{start}

)WHERE r>#{end}

</select>

5.3. 测试类

//定义分页查询需要的所有条件

int pageIndex=1;

int pageSize=5;

 

//多条件采用帮助类形式保存

EmpUtil eu=new EmpUtil("%刘%", EmpUtil.stringToDate("2015-01-01"), EmpUtil.stringToDate("2018-12-31"), 3);

 

HashMap map=new HashMap();

//将所有条件以键值对的方式保存在HashMap

//配置文件将以键获取对应的数据

map.put("eu", eu);

map.put("start", pageSize*pageIndex);

map.put("end",pageSize*(pageIndex-1));

List<Emp> emps= ed.findEmpByCondition2(map);

 

for (Emp emp : emps) {

System.out.println(emp);

}

6. Mybatis多对一配置

6.1. 实体类中存在对象类型属性,则视为一对一或者多对一的关联关系

6.2. 实体类设计

public class Emp{

private Dept dept;

}

6.3. 接口设计

List<Emp> findAllEmps();

6.4. 配置mybatis-config.xml

<!--

FULL 可以自动映射对象的子对象属性与列名的对应关系

 -->

<setting name="autoMappingBehavior" value="FULL"/>

6.5. 配置EmpMapper.xml

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

 

<!-- 由于Emp类的所有属性名与Emp表的列名完全一致,所以不用手动配置映射关系 -->

<!-- association 表示多对一的关联关系

dept:Emp类中表示Dept类型的属性名

Dept:Dept作为Emp的属性的类型

-->

<association property="dept" javaType="Dept" >

<!-- 设置autoMappingBehavior 为FULL 子对象Dept的属性与列名也不用做对应 -->

<!-- 设置Dept类的属性与查询结果的列名的映射关系

由于autoMappingBehavior设为full ,则可以无需配置属性名与列名的对应

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

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

<result property="loc" column="loc" />-->

</association>

</resultMap>

 

6.6. 拼写SQL语句

<!-- 使用association节点配置多对一关系,必须基于连表查询

resultMap映射关系基于查询结果的

 -->

<select id="findAllEmps" resultMap="empMap">

SELECT * FROM emp e

LEFT JOIN dept d

ON e.deptid=d.deptid

</select>

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个基于Java的开源框架,简化了使用Java编写企业级应用程序所需的配置和部署过程。它提供了一个简单且功能强大的方式来连接MySQL数据库,并使用Druid作为连接池管理工具,以提高数据库连接的性能和稳定性。同时,Spring Boot也提供了集成MyBatis的支持,以便于数据库访问和操作。 对于连接MySQL数据库,首先需要在项目的配置文件中配置MySQL数据库的连接信息,包括数据库的URL、用户名和密码等。然后,在Spring Boot的启动类中使用相应的注解,例如@EnableAutoConfiguration和@SpringBootApplication,来启用Spring Boot的自动配置和扫描功能。 接下来,可以通过在pom.xml文件中添加相应的依赖来引入Druid和MyBatis等库。Druid作为连接池管理工具,可以在配置文件中配置最大连接数、最小连接数等参数,以及其他高级功能如连接池监控等。MyBatis是一个优秀的ORM框架,可以通过编写XML文件或注解的方式来定义和执行数据库操作。 在编写代码时,可以使用Spring Boot提供的注解,如@Repository、@Service和@Controller等,来标记数据访问层、业务逻辑层和控制层的实现类。同时,可以使用@Mapper注解来标记MyBatis的Mapper接口,以便让Spring Boot自动创建对应的实现类,并与数据库进行交互。 总结来说,Spring Boot结合MySQL、Druid和MyBatis提供了一种简单而强大的方式来连接和操作数据库。通过配置文件和注解,可以快速搭建和部署应用程序,并实现高性能的数据库访问和操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值