mybatis学习笔记-04
Posted 宏远小七
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习笔记-04相关的知识,希望对你有一定的参考价值。
1.设置日志
日志可以方便我们排错,默认是不开启的,开启需要在核心配置文件中设置。
name和value要和官方文档的一致!
1.1 默认日志
<!--设置日志 默认配置-->
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
1.2LOG4J
- 导入log4j的依赖(pom.xml)
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
- mybatis-config.xml核心配置文件
<!--设置日志-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
- log4j.properties(放在resources包中)
#将等级为DEBUG的日志信息输出到console和file这两个目的地,console和file的定义在下面的代码
log4j.rootLogger=DEBUG,console,file
#控制台输出的相关设置
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#文件输出的相关设置
log4j.appender.file = org.apache.log4j.RollingFileAppender
log4j.appender.file.File=./log/ZXF.log
log4j.appender.file.MaxFileSize=10mb
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%dyy-MM-dd][%c]%m%n
#日志输出级别
log4j.logger.org.mybatis=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
这样设置之后在下次控制台输出的时候就会有日志同时输出了。
2.分页
分页操作是要求掌握的。
2.1limit分页
接口
//分页取得用户
List<User> getUserLimit(Map<String,Object> map);
xml配置文件
<select id="getUserLimit" parameterType="map" resultType="user">
select * from mybatis.user limit #startindex,#endindex;
</select>
测试
@Test
public void getUserLimit()
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<>();
map.put("startindex",0);
map.put("endindex",3);
List<User> userLimit = mapper.getUserLimit(map);
for (User user : userLimit)
System.out.println(user);
sqlSession.close();
2.2RowBounds分页
接口
//rowBounds分页
List<User> getUserRowBounds();
xml配置文件
<select id="getUserRowBounds" resultType="user">
select * from mybatis.user;
</select>
测试
@Test
public void getUserRowBounds()
SqlSession sqlSession = MybatisUtil.getSqlSession();
RowBounds rowBounds = new RowBounds(0, 2);
List<User> user = sqlSession.selectList("com.ZXF.dao.UserMapper.getUserRowBounds", null, rowBounds);
for (User user1 : user)
System.out.println(user1);
sqlSession.close();
在两个方法的测试类中,我们看到sqlsession调用的方法不同,RowBounds中的方法现在不常用,而且使用RowBounds分页要去拼接SQL语句,我个人习惯使用limit分页的方法。
3.lombok
lombok是一款可以让我们偷懒的工具。
lombok官网上说的话:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
我们在面对一些重复冗长而又没有什么营养价值的代码时,我们都会厌倦,lombok就会帮我们减少这些代码。
使用方法
- 在settings中下载lombok插件。
- 在所需要使用的项目中导入依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
- 例子
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student
private int id;
private String name;
private int tid;
这些只是lombok的其中几个,还需要了解的可以看官网https://projectlombok.org/
4.使用注解开发
对于mybatis,一些功能简单的可以使用注解开发,但是一些比较复杂的SQL语句还是需要通过xml去实现!
使用注解开发时,核心配置文件一定要用class注册
<mappers>
<!--使用注解开发绑定接口-->
<mapper class="com.ZXF.dao.UserMapper"/>
</mappers>
使用注解进行CRUD
接口
//通过id查找用户
@Select("select * from user where id=#id")
User getUserById(@Param("id") int id);
//插入用户
@Insert("insert into mybatis.user (id,name,pwd) values (#id,#name,#pwd)")
int insertUser(User user);
//更新用户
@Update("update user set name=#name,pwd=#pwd where id=#id")
int updateUser(User user);
//删除用户
@Delete("delete from user where id=#id")
int deleteUser(@Param("id") int id);
@Param这个注解在需要传入多个参数的时候必须使用,但一个参数的话可用可不用,但为了养成习惯和为之后的排错,建议传入一个参数时也使用。
测试
@Test
public void getUserById()
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(5);
System.out.println(user);
sqlSession.close();
@Test
public void insertUser()
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
int i = mapper.insertUser(new User(6, "77", "1234567"));
sqlSession.commit();
sqlSession.close();
@Test
public void updateUser()
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.updateUser(new User(6,"77","1111111"));
sqlSession.commit();
sqlSession.close();
@Test
public void deleteUser()
SqlSession sqlSession = MybatisUtil.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
mapper.deleteUser(6);
sqlSession.commit();
sqlSession.close();
这是我mybatis自学笔记的第4篇,没看过我之前的文章的话可以看看,前3篇的链接↓
mybatis学习笔记-03
mybatis学习笔记-02
mybatis学习笔记-01
本篇文章到这就结束了。自学不易,如果写得不详细,可以结合官方文档看,也可以评论区交流,这篇文章有可以优化的地方希望大佬指教指教。
以上是关于mybatis学习笔记-04的主要内容,如果未能解决你的问题,请参考以下文章