1.索引(不常用)
1.1arg0、arg1(不推荐,而且有些版本会报错)
1.2param1、param2(不推荐)
2.注解(常用):给参数设置别名
3.对象(常用):直接通过属性获取
4.Map(常用):根据key值获取
5.代码
Orders实体类
package entity;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Description:
* @Company: 千锋互联
* @Author: 李丽婷
* @Date: 2020/9/17
* @Time: 上午11:00
*/
public class Orders {
private String oid;
private int uid;
private int aid;
private Date otime;
private BigDecimal ocount;//订单小计
private int ostate;//订单状态 0 未付款,1已经付款未发货 2发货待收货 3 收货待评价 4订单完成 5 退货状态
public String getOid() {
return oid;
}
public void setOid(String oid) {
this.oid = oid;
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public int getAid() {
return aid;
}
public void setAid(int aid) {
this.aid = aid;
}
public Date getOtime() {
return otime;
}
public void setOtime(Date otime) {
this.otime = otime;
}
public BigDecimal getOcount() {
return ocount;
}
public void setOcount(BigDecimal ocount) {
this.ocount = ocount;
}
public int getOstate() {
return ostate;
}
public void setOstate(int ostate) {
this.ostate = ostate;
}
}
MyTest测试类
import dao.GuaDao;
import dao.ProductDao;
import entity.Orders;
import entity.Product;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Test;
import utils.MyBatisUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
/**
* zt
* 2020/9/23
* 20:28
*/
public class MyTest {
SqlSession sqlSession = null;
@Before
public void init(){
sqlSession = MyBatisUtils.getSqlSession();
}
@Test
public void FindAllByUid1(){
GuaDao mapper = sqlSession.getMapper(GuaDao.class);
BigDecimal bigDecimal = new BigDecimal(65967.00);
System.out.println(mapper.findAllByUidOcount1(8,bigDecimal));
}
@Test
public void FindAllByUid2(){
GuaDao mapper = sqlSession.getMapper(GuaDao.class);
BigDecimal bigDecimal = new BigDecimal(65967.00);
System.out.println(mapper.findAllByUidOcount2(8,bigDecimal));
}
@Test
public void FindAllByUid3(){
GuaDao mapper = sqlSession.getMapper(GuaDao.class);
BigDecimal bigDecimal = new BigDecimal(65967.00);
System.out.println(mapper.findAllByUidOcount3(8,bigDecimal));
}
@Test
public void FindAllByUid4(){
GuaDao mapper = sqlSession.getMapper(GuaDao.class);
BigDecimal bigDecimal = new BigDecimal(65967.00);
Orders orders = new Orders();
orders.setUid(8);
orders.setOcount(bigDecimal);
System.out.println(mapper.findAllByUidOcount4(orders));
}
@Test
public void FindAllByUid5(){
GuaDao mapper = sqlSession.getMapper(GuaDao.class);
BigDecimal bigDecimal = new BigDecimal(65967.00);
HashMap<String, Object> map = new HashMap<>();
map.put("uid", 8);
map.put("ocount", bigDecimal);
Orders allByUidOcount5 = mapper.findAllByUidOcount5(map);
System.out.println(allByUidOcount5);
}
@Test
public void testFindAll(){
ProductDao mapper = sqlSession.getMapper(ProductDao.class);
System.out.println(mapper.findAll());
}
@Test
public void findById(){
ProductDao mapper = sqlSession.getMapper(ProductDao.class);
System.out.println(mapper.findById(1));
}
@Test
public void findByIdAndName(){
ProductDao mapper = sqlSession.getMapper(ProductDao.class);
System.out.println(mapper.findByNameAndId("红米4", 1));
}
@Test
public void update(){
Product product = new Product();
product.setPname("呱呱棒手机");
product.setPinfo("就是棒!");
product.setPid(1);
ProductDao mapper = sqlSession.getMapper(ProductDao.class);
System.out.println(mapper.update(product));
sqlSession.commit();
}
@Test
public void findByNameAndInfo(){
ProductDao mapper = sqlSession.getMapper(ProductDao.class);
Map<String,Object> map = new HashMap<>();
map.put("name", "呱呱棒手机");
map.put("info", "就是棒!");
System.out.println(mapper.findByNameAndInfo(map));
}
@Test
public void testFind5(){
//sqlSession.selectOne("namespace+statementid")
//动态代码
ProductDao dao = sqlSession.getMapper(ProductDao.class);//) Proxy.newProxyInstance
System.out.println( dao.findAll2());
}
@Test
public void testFind3(){
//sqlSession.selectOne("namespace+statementid")
//动态代码
ProductDao dao = sqlSession.getMapper(ProductDao.class);//) Proxy.newProxyInstance
System.out.println(dao.findByNameAndInfo("绿","绿"));
}
}
GuaDao.java
package dao;
import entity.Orders;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* zt
* 2020/9/24
* 20:03
*/
public interface GuaDao {
//索引-->#{arg0}
public List<Orders> findAllByUidOcount1(Integer uid, BigDecimal bigDecimal);
//索引-->#{param1}
public List<Orders> findAllByUidOcount2(Integer uid, BigDecimal bigDecimal);
//注解@Param("a")
public List<Orders> findAllByUidOcount3(@Param("a") Integer uid, @Param("b")BigDecimal ocount);
//对象
public Orders findAllByUidOcount4(Orders orders);
//Map
public Orders findAllByUidOcount5(Map<String,Object> map);
}
GuaMapper.xml
Mapper中:通过resultMap的type定义为entity包下的Orders实体类,映射到orders的数据库表中的字段,select标签采用resultMap的名字aaa拿到这个映射(否则调用dao层方法的时候返回的对象为null)
<?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">
<!-- "Orders{" +
"oid='" + oid + '\'' +
", uid=" + uid +
", aid=" + aid +
", otime=" + otime +
", ocount=" + ocount +
", ostate=" + ostate +
'}';-->
<mapper namespace="dao.GuaDao">
<resultMap id="aaa" type="entity.Orders">
<id property="oid" column="o_id"></id>
<result property="uid" column="u_id"></result>
<result property="aid" column="a_id"></result>
<result property="otime" column="o_time"></result>
<result property="ocount" column="o_count"></result>
<result property="ostate" column="o_state"></result>
</resultMap>
<select id="findAllByUidOcount1" resultMap="aaa">
select * from orders where u_id = #{arg0} and o_count = #{arg1};
</select>
<select id="findAllByUidOcount2" resultMap="aaa">
select * from orders where u_id = #{param1} and o_count = #{param2};
</select>
<select id="findAllByUidOcount3" resultMap="aaa">
select * from orders where u_id = #{a} and o_count = #{b};
</select>
<select id="findAllByUidOcount4" resultMap="aaa">
select * from orders where u_id = #{uid} and o_count = #{ocount};
</select>
<select id="findAllByUidOcount5" resultMap="aaa">
select * from orders where u_id = #{uid} and o_count = #{ocount};
</select>
</mapper>
mybatisConfig.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">
<!--mybatis-3-config.dtd xml的约束-->
<configuration>
<properties resource="dbinfo.properties"></properties>
<settings>
<!--配置mybatis底层处理打印日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--连库环境-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<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="mapper/ProductMapper.xml"></mapper>
<mapper resource="mapper/ProductDetailMapper.xml"></mapper>
<mapper resource="mapper/OrdersMapper.xml"></mapper>
<mapper resource="mapper/GuaMapper.xml"></mapper>
</mappers>
</configuration>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>0923new02</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
GuaUtils.java—>MyBatis工具类
package utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
/**
* zt
* 2020/9/24
* 15:22
*/
public class GuaUtils {
final static ThreadLocal<SqlSession> sessionThreadLocal = new ThreadLocal<>();
static SqlSessionFactory sqlSessionFactory = null;
static {
try {
InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
SqlSession sqlSession = sessionThreadLocal.get();
if(sqlSession==null){
sqlSession = sqlSessionFactory.openSession();
}
return sqlSession;
}
public static void commit(){
getSqlSession().commit();
close();
}
public static void close(){
SqlSession s = getSqlSession();
s.close();
sessionThreadLocal.remove();
}
public void rollback(){
SqlSession sqlSession = getSqlSession();
sqlSession.rollback();
}
public static <T extends Object> T getMapper(Class<T> tClass){
return getSqlSession().getMapper(tClass);
}
public static void main(String[] args) {
System.out.println(getSqlSession());
System.out.println(getSqlSession());
close();
System.out.println(getSqlSession());
System.out.println(getSqlSession());
}
}