Python 官方文档:入门教程 => 点击学习
今晚继续复习mybtis 以根据id值查询单条数据为例 编写sqlMapConfig.xml文件 <configuration> <!-- 使用mybatis
今晚继续复习mybtis
以根据id值查询单条数据为例
编写sqlMapConfig.xml文件
<configuration>
<!-- 使用mybatis需要的数据源和事务配置,后续如果整合spring之后,将不再需要 -->
<environments default="development">
<!-- 配置数据源和事务 -->
<environment id="development">
<!-- 配置事务管理,将事务管理交给mybatis管理 --> <transactionManager type="JDBC" />
<!-- 配置数据源 -->
<dataSource type="POOLED">
<property name = "driver" value = "com.Mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/db_shop? useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/> <property name="passWord" value=""/>
</dataSource>
</environment>
</environments>
<!-- 加载**.xml配置文件 -->
<mappers>
<mapper resource="product.xml"/>
</mappers>
</configuration>
编写失血模型对象:Product,最好字段名和数据库里面的字段名一直
public class Product {
private int p_id;
private String name;
private int p_number;
private double price;
private String add_time;
public Product(int p_id, String name, int p_number, double price, String add_time) {
super();
this.p_id = p_id;
this.name = name;
this.p_number = p_number;
this.price = price;
this.add_time = add_time;
}public Product() {
super();
}
public int getP_id() {
return p_id; }
public void setP_id(int p_id) {
this.p_id = p_id; }public String getName() { return name; }
public void setName(String name) { this.name = name; }
public int getP_number() {
return p_number; }
public void setP_number(int p_number) { this.p_number = p_number; }
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
public String getAdd_time() { return add_time;
}
public void setAdd_time(String add_time) { this.add_time = add_time; }
@Override
public String toString() {
return "Product [p_id=" + p_id + ", name=" + name + ", p_number=" + p_number + ", price=" + price + ", add_time=" + add_time + "]"; } }
编写单个映射关系的sql.xml:product.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">
<!-- 映射的sql文件 namespace:命名空间,可以理解成将部分的sql语句进行隔离。到后面的mapper代理方式将有更 加重要的作用 --> <mapper namespace="test">
<!--select:表示要执行的查询语句 id:给这个查询语句取一个名字,唯一的,java中要调用的使用。
parameterType:输入参数的数据类型
resultType:输出参数的数据类型,一般绑定成model的对象 #{value}:表示用来和占位符一样,用来接受输入的参数值。 --> <select id="findById" parameterType="java.lang.Integer" resultType="com.woniuxy.model.Product">
SELECT * FROM t_product WHERE p_id = #{value}
</select>
</mapper>
编写java代码进行测试执行sql语句并得到结果
* public class MybatisDemo1 {
* public static void main(String[] args) throws IOException {
* new MybatisDemo1().queryById(); }
* public void queryById() throws IOException {
* //1、读取到SqlMapConfig.xml文件的流 String path = "SqlMapConfig.xml";
* InputStream config = Resources.getResourceAsStream(path);
//创建会话工厂,同时将SqlMapConfig.xml里面的数据放到工厂中 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
//开启会话 SqlSession sqlSession = factory.openSession();
Object obj = sqlSession.selectOne("test.findById", 1); System.out.println(obj); } }
进行模糊查询:查询出多条结果集
<!-- 在原有的xml文件中进行配置即可,不需要新建,之前的也已经在SqlMapConfig.xml文件中进行了配 置 --> <select id="queryByName" parameterType="java.lang.String" resultType="com.woniuxy.model.Product"> SELECT * FROM t_product WHERE name like "%${value}%" </select> public void queryByName() throws Exception
{
String path = "SqlMapConfig.xml"; //获取流对象 InputStream config = Resources.getResourceAsStream(path); //获取会话工厂 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config); //开启会话 SqlSession sqlSession = factory.openSession(); List<Object> list = sqlSession.selectList("test.queryByName", "旺仔"); //迭代 System.out.println(list);
}
新增语句
<!-- 新增一条数据 parameterType:传入参数的数据类型,用失血模型对象即可。 -->
<insert id="insertProduct" parameterType="com.woniuxy.model.Product">
INSERT INTO t_product(name,p_number,price) value(#{name},#{p_number},# {price});
</insert>
public void insert() throws Exception{ String path = "SqlMapConfig.xml";
* //获取流对象
* InputStream config = Resources.getResourceAsStream(path); //获取会话工厂
* SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(config);
* //开启会话
* SqlSession sqlSession = factory.openSession();
* Product prod = new Product();
* prod.setName("雪碧");
* prod.setP_number(10);
* prod.setPrice(3.0);
* int row = sqlSession.insert("test.insertProduct", prod); System.out.println(row); sqlSession.commit(); sqlSession.close(); }
mapper代理的方式进行讲解增、删、改、查(重点)
步骤1:创建对应的Mapper接口,和之前的dao接口一致
步骤2:编写对应的xxmapper.xml配置文件。有要求
1)mapper标签里面的namespace:必须写成对应的Mapper接口的全路径名
2)sql语句里面的id:必须和接口中对应方法的名称一致。
3)sql语句里面的parameterType:必须要和接口中方法的形式参数数据类型一致
4)sql语句里面的resultType:必须和接口中方法的返回值数据类型一致
步骤3:将编写好的**mapper.xml文件在SqlMapConfig.xml文件中加载
步骤4:编写实现类,并在这里直接测试
别名和mapper映射详解
设置别名
在mybatis配置文件中,别名是一直存在的,实际上在框架中已经存在一些默认的别名。比如
java.lang.String对应的别名:String,java.lang.Integer对应的别名:int
在开发中,一般mapper.xml配置文件中的parameterType和resultType往往对应的名称需要写上
model的全路径,而且还是多次被重复使用,可以选择给该路径取一个别名。用别名来替换比较复杂的
全路径名
以扫描包的形式进行配置
自定义的POJO类(重点)
自定义POJO类,一般指的是高级查询,在想要的数据和传入的条件不再一张表中,通过表所创建的失血
模型model已经不能够满足传入参数的需求了,这个时候,就需要使用自定义的POJO类
因为一个失血模型已经不能够满足查询输入参数的要求了,所以进行扩展,创建一个UserCustom类,里
面包含user对象声明和userInfo对象声明
以上就是mybatis实现mapper代理模式的方式的详细内容,更多关于mybatis mapper代理模式的资料请关注编程网其它相关文章!
--结束END--
本文标题: mybatis实现mapper代理模式的方式
本文链接: https://lsjlt.com/news/128788.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0