SpringBoot整合mybatis并且实现单表curd操作

SpringBoot整合mybatis并且实现单表curd操作

在idea中整合mybatis,主要是步骤细节

具体步骤

1.首先是需要关键的依赖:

		<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

2.只有这和依赖才可以整合成功。
然后是配置文件:

server:
  port: 8080  #设置端口号
spring:
  datasource:
      username: root
      password: root
      url: jdbc:mysql://127.0.0.1:3306/jtadmin?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
      driver-class-name: com.mysql.jdbc.Driver
mybatis:
  mapper-locations: classpath:/mybatis/mappers/.xml#这里是如果路径对应的话,
  就可以不用配置,但是如果不对应的话就需要配置,classpath:相对路径,对应的文件映射
  type-aliases-package: com.jt.pojo #实体类文件路径
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

3.然后在 启动类上加注解:
@MapperScan(“com.jt.mapper”)
这里主要是接口路径

4.实体类:
这里用到了lombok注解;

@Data
@Accessors(chain = true)
public class DemoUser {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

5.然后在接口中写方法即可:

@Repository
public interface  DemoUserMapper {
        //测试整合mybatis
        List<DemoUser> findAll();
}

6.这里同时在映射文件里写入相对应的:

<?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="com.jt.mapper.DemoUserMapper"><!--这里路径必须写对应接口类-->          
         <insert id="insertUser">
        insert into demo_user(id,name,age,sex)
        values(null,#{name},#{age},#{sex})
    </insert>
<!--配置实体类与数据库字段不对应问题-->
        <select id="findAll" resultMap="DemoUser">
        select * from demo_user
        </select>
<!--需要执行的sql语句-->
</mapper>

然后测试即可!
附测试:
SpringBoot整合mybatis并且实现单表curd操作

DemoUser:

@Data
@Accessors(chain = true)
public class DemoUser {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

SpringBootRun:

@SpringBootApplication  //标识主启动类的注解
@MapperScan("com.jt.mapper")    //将Mapper接口交给容器管理
public class SpringBootRun {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRun.class,args);
    }
}

DemoUserMapper:

import java.util.List;
public interface DemoUserMapper {

    List<DemoUser> findAll();

    void insertUser(DemoUser user);

    void updateUser(String oldName, String nowName, String sex);
}

Test:

@SpringBootTest
public class TestSpringBoot {

    @Autowired
    private DemoUserMapper userMapper;

    //数据的查询
    @Test
    public void testFindAll(){
        //代理的测试  jdk动态代理
        System.out.println(userMapper.getClass());
        System.out.println(userMapper.findAll());
    }

    //新增用户
    @Test
    public void testInsert(){
        DemoUser user = new DemoUser();
        user.setId(null).setName("mybatis信息").setAge(18).setSex("男");
        userMapper.insertUser(user);
    }

    //将mybatis name="mybatis信息" 改为"测试信息".要求sex="男"
    //update demo_user set name="测试信息"
    // where name="mybatis信息" and sex="xx"
    //更新操作
    @Test
    public void testUpdate(){
        //1.封装数据
        String oldName = "mybatis信息";
        String nowname = "测试信息";
        String sex = "男";
        userMapper.updateUser(oldName,nowname,sex);
    }

}

UserMapper:

<?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">
<!--namespace
	1.Mapper.xml配置文件的唯一标识
	2.需要与Mapper接口保持一致.
	  UserMapper.findAll();  通过方法映射Sql语句!!!
-->
<mapper namespace="com.jt.mapper.DemoUserMapper">

	<!--编辑更新操作  #mybatis中的一种表达式写法 -->
	<update id="updateUser">
		update demo_user set name=#{nowName} where name=#{oldName}
		and sex=#{sex}
	</update>


	<!--
		完成用户入库操作 id="与方法名称保持一致"
		sql结束时不需要添加;号 在Mysql数据库中执行;号没有问题,
		但是如果在Oracle中执行则必然报错.
	-->
	<insert id="insertUser">
		insert into demo_user(id,name,age,sex)
			value(null,#{name},#{age},#{sex})
	</insert>

	<!--查询标签必须有返回值
		resultType :直接返回POJO对象的数据  单表查询
		resultMap: 适用于关联查询的结果封装 一般采用第三方对象接收

		问题:能否将不变的包路径进行优化???
		解决方案: 定义别名包即可
		说明:
			resultType="包名.类名"  resultType="com.jt.pojo.DemoUser"
		定义别名包
		type-aliases-package: com.jt.pojo
		resultType="DemoUser" 可以直接返回对象的名称
	    程序解析时: 首先根据别名包的名称进路径的拼接 com.jt.pojo.DemoUser
	-->
	<select id="findAll" resultType="DemoUser">
		select * from demo_user
	</select>

	<!--更新操作的标签就是为了方便程序员开发时使用,程序
	执行时没有任何的差别,所以可以混用
	<insert id="">
	</insert>-->
</mapper>
上一篇:超详细的逐句介绍Java反射之Field类和InvocationTargetException类函数源码讲解(全)


下一篇:博士论文编写_latex相关记载