博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis(数据库增删改查)
阅读量:5134 次
发布时间:2019-06-13

本文共 3761 字,大约阅读时间需要 12 分钟。

1.不创建mapper对应接口(selectOne(S))

//不采用接口方式    @Test    public void selectPersonNoInterface() {        SqlSession sqlSession = MybatisUtil.getSqlSession();        Person person = sqlSession.selectOne("com.xfishs.dao.PersonMapper.selectPerson",1);//        Person person = sqlSession.selectOne(与Person.xml文件相对应,传入参数);        System.out.println(person);        sqlSession.close();    }

 

2.列名与属性不一致的时候处理(与bean与数据库名不一致)

例如 :bean 中为userName, 数据库中为  name

解决方案一、使用别名

  

写全sql语句,如 select * from Person.   改写为 select `id`,`name` as userName,`age` from Person.

  

解决方案二、使用 ResaultMap(Person.xml)

 

 3.sql 语句中 #  和 $ 的区别与用法(模糊查询用到)

  #是占位符号 与? 等价

  $是字符串拼接。因此使用$的时候,如果参数是字符串类型,那么应当使用引号

  当参数表示表明 或者 列名的时候,只能使用$

  如:

例如参数为列名时

  

  

4.查询的时候 不区分大小写(全都转换为大写,或者小写)

select * from person where lower(name) like lower('%${value}%')

 

5.sql语句中传递参数

  ${value}   固定写法

  #{参数}  

    方法一、 接口方法中String function(String title);  那么可以写 #{title}

    方法二、#{0},#{1}....   (多参数时,按索引值植入),此时接口参数名任意写

    方法三、接口使用注解(@Param)

    mapper中

    接口中

List
selectPersonByPage(@Param("offset") int offset,@Param("pageSize") int pageSize);

    方法四、使用map (常用) mapper 和方法三 一致   mapper中的占位符,要与 map中的key意义对应

    接口

List
selectPersonByPage(Map
map);

    使用时

@Test    public void selectPersonByPage() {        SqlSession sqlSession = MybatisUtil.getSqlSession();        PersonMapper personMapper = sqlSession.getMapper(PersonMapper.class);        Map
map = new HashMap<>(); map.put("offset",2); map.put("pageSize",2); List
persons = personMapper.selectPersonByPage(map); sqlSession.close(); System.out.println(persons); }

 

6.插入数据时,返回自增id

方法一、在mapper中配置   useGeneratedKeys 参数只针对 insert 语句生效,默认为 false。当设置为 true 时,表示如果插入的表以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键返回。

INSERT INTO `person` (`name`, `age`) VALUES (#{name}, #{age})

  测试

@Test    public void insertPerson() {        SqlSession sqlSession = MybatisUtil.getSqlSession();        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);        Person person = new Person("nihao",18);        mapper.insertPerson(person);        sqlSession.commit();        System.out.println(person);    }

  这个时候 Person的id属性值已经被赋值为 数据库中的id值

方法二、在mybatis的全局配置中进行配置 useGeneratedKeys 属性(mybatis-config.xml)   还是需要在mapper中指定keyProperty的属性

  

 7.sql更新操作 

UPDATE `person` SET `name` = #{name} ,`age`=#{age} WHERE (`id`=#{id})

测试

@Test    public void updatePerson() {        SqlSession sqlSession = MybatisUtil.getSqlSession();        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);        //先查询        Person person = mapper.selectPerson(1);        //修改        person.setAge(35);        //更新        int count = mapper.updatePerson(person);        sqlSession.commit();        sqlSession.close();        System.out.println("修改记录 count = " + count);        System.out.println(person);    }

 

8.sql删除操作

delete from `person` where `id` = #{id}

测试

@Test    public void deletePerson() {        SqlSession sqlSession = MybatisUtil.getSqlSession();        PersonMapper mapper = sqlSession.getMapper(PersonMapper.class);        int count = mapper.deletePerson(1);        sqlSession.commit();        sqlSession.close();        System.out.println("删除记录 count = " + count);    }

  

 

  

  

 

  

 

 

 

 

转载于:https://www.cnblogs.com/xfishs/p/9846756.html

你可能感兴趣的文章
Linux基础-2文件及目录管理
查看>>
python re.sub
查看>>
《程序是怎样跑起来的》第二章
查看>>
TP5图片上传
查看>>
elasticsearch集群搭建
查看>>
【AtCoder】ARC090
查看>>
运用runtime与AOP实现oc中的kvo
查看>>
使用ssm框架开发dao层所需的配置文件(applicationContext.xml)和jdbc.properties文件
查看>>
使用ssm框架开发service层所需要的配置文件(applicationContext.xml)
查看>>
使用ssm框架开发controller层所需的配置文件spring_mvc.xml
查看>>
使用ssm框架开发WEB-INF中的web.xml文件的配置
查看>>
品优购项目依赖文件的引入
查看>>
品优购项目--common模块配置文件
查看>>
品优购项目--common模块依赖的引入
查看>>
品优购项目--dao模块配置文件
查看>>
品优购项目--service-sellergoods模块的配置文件
查看>>
虚拟机上传图片---fastDFS配置文件 fdfs_client.conf
查看>>
虚拟机上传文件测试类-java代码
查看>>
(上传文件)fastDFSClient----客户端工具类
查看>>
分布式项目中--上传文件步骤
查看>>