要在spring boot中使用mybatis,首先需要在项目中引入jar包
在pom.xml文件中添加配置:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
配置文件application.properties中配置数据源信息:
spring.datasource.url = jdbc:mysql://localhost:3306/{baseName}?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username = root
spring.datasource.password = 123456
spring.datasource.driverClassName = com.mysql.jdbc.Driver
以下有两种方法操作sql语句。
1、注解式
项目底下新建一个包:com.example.mapper
在新建一个UserMapper接口:
@Mapper
public interface UserMapper {
@Select("select * from user where id = #{id}")
User findUserById(@Param("id")int id);
@Insert("insert into user (name,sex) values (#{user.name},#{user.sex})")
int insertUser(@Param("user")User user);
@Update("update user set name = #{name} where id = #{id}")
User updateUserById(@Param("id")int id,@Param("name")String name);}
@Delete("delete from user where id = #{id}")
User deleteUserById(@Param("id")int id);
然后再启动类上加上注解:
@MapperScan(“com.example.mapper”)
告诉容器,启动的时候需要扫描这个包
使用前先注入:
@Autowired
private UserMapper userMapper;
User user = userMapper.findUserById(1);
注解式使用和书写都比较简单,清晰明了。
但是不能应对复杂的sql逻辑。那么就需要配置文件的方式去使用了。
当然这两种方式在项目中是可以共存的。
2、配置文件式
首先新建一个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">
<mapper namespace="cn.les.CMS.mapper.JobMapper">
<select id="findAllDogs" resultType="com.xyy.domain.Dog">
SELECT * FROM dog;
</select>
<select id="findById" resultType="com.xyy.domain.Dog" parameterType="int">
SELECT * FROM dog WHERE id=#{id};
</select>
<insert id="saveDog" parameterType="com.xyy.domain.Dog">
INSERT INTO dog(age,name) VALUES(#{age},#{name});
</insert>
</mapper>
然后再配置文件:application.properties中添加:
mybatis.mapperLocations = classpath:mapping/*.xml
下面需要在写一个接口,接口名跟mapper.xml配置文件中 sql语句的id一样:
public interface DogMapper{
List<Dog> findAllDogs();
Dog findById(@Param("id")int id);
}
调用该接口就跟注解式是一样的,这里就省略了。
数据库连接池的配置还没有加入,等待下次。