MyBatis基础②

网友投稿 290 2022-09-05

MyBatis基础②

文章目录

​​MyBatisX​​​​配置文件完成增删改查​​

​​查询所有数据​​

​​编写接口方法​​​​在sql映射文件中编写SQL语句​​​​执行方法测试​​

​​查询某一条数据​​

​​参数占位符​​​​parameterType使用​​​​SQL语句中特殊字段处理​​

MyBatisX

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。主要功能

XML映射配置文件 和 接口方法 间相互跳转根据接口方法生成 statement

statement就是映射文件里面的sql语句

注意:安装完毕后需要重启IDEA

配置文件完成增删改查

我们以如下的表作为例子:

核心思想套路:

如何写对应的sql语句完成这个功能要不要参数完成之后返回什么样的结果

查询所有数据

步骤:

步骤详解:

编写接口方法

在这之前先要创建好映射文件,并且这个映射文件在resources文件夹中的位置,要跟java中的保持一致。并且最好映射文件的名字和接口名一样(不区分大小写),这样就可以不用在mybatis配置文件中重新定义映射文件路径(直接包扫描简化SQL映射文件的加载)。

接口方法:

public interface BrandMapper { List selectAll();}

在sql映射文件中编写SQL语句

直接运用插件的跳转来到sql映射文件中。

这个地方有几个注意点:

如果想要在写sql语句的时候有提示。先要在设置中设置MySQL方言,再在右侧连接数据库在实体类属性名和数据库表列名不一样的时候,会出现不能自动封装数据的情况。

不能自动封装数据的三种解决办法: ①起别名

缺点:每次查询都要定义一次别名

②sql片段

id, brand_name as brandName, company_name as companyName, ordered, description, status

缺点:不灵活

③resultMap创建映射关系

resultMap: 1. 定义标签 2. 在 select * from tb_brand;

执行方法测试

public class Try1 { public static void main(String[] args) throws Exception { //获取SqlSessionFactory对象 String resource = "mybatis-config.xml"; //此处填写相对于resources的路径 InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //用SqlSessionFactory对象制造SqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession();// //用SqlSession对象来执行sql语句// List users = sqlSession.selectList("test.selectAll"); BrandMapper mapper = sqlSession.getMapper(BrandMapper.class); List brands = mapper.selectAll(); for (Brand brand : brands) { System.out.print(brand.getId()); System.out.print(" " + brand.getBrandName()); System.out.print(" " + brand.getCompanyName() + " "); System.out.print(brand.getOrdered()); System.out.print(" " + brand.getDescription()); System.out.println(brand.getStatus()); } sqlSession.close(); }}

查询某一条数据

使用场景:接收一条id,将这条数据的详细信息返回。

步骤: ①编写接口方法

public interface BrandMapper { List selectAll(); Brand selectOne(int id);}

②在sql映射文件中编写SQL语句

此处我们要了解三个知识点:

参数占位符

mybatis提供了两种参数占位符:

#{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。${} :拼接SQL。底层使用的是​​Statement​​,因为是直接替换,会存在SQL注入问题。

使用时机:

参数传递,都是用#{}如果要对表名、列名进行动态设置,只能使用${}进行sql拼接

parameterType使用

对于有参数的mapper接口方法,我们在映射配置文件中应该配置 ​​ParameterType​​ 来指定参数类型。只不过该属性都可以省略。如下图:

SQL语句中特殊字段处理

以后肯定会在SQL语句中写一下特殊字符,比如某一个字段大于某个值,如下图

可以看出报错了,因为映射配置文件是xml类型的问题,而 > < 等这些字符在xml中有特殊含义,所以此时我们需要将这些符号进行转义,可以使用以下两种方式进行转义

转义字符(特殊字符较少时使用)下图的​​<​​ 就是 ​​<​​ 的转义字符。

(特殊字符较多时使用)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL高级①(约束)
下一篇:MySQL高级③(多表查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~