SpringBoot 整合jdbc和mybatis的方法
通用配置#
下面介绍的整合JDBC和整合MyBatis都需要添加的实体类和配置
数据库表#
CREATETABLE`user`( `id`int(11)NOTNULLAUTO_INCREMENT, `username`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNOTNULL, `address`varchar(255)CHARACTERSETutf8mb4COLLATEutf8mb4_0900_ai_ciNOTNULL, PRIMARYKEY(`id`)USINGBTREE )ENGINE=InnoDBAUTO_INCREMENT=4CHARACTERSET=utf8mb4COLLATE=utf8mb4_0900_ai_ciROW_FORMAT=Dynamic; SETFOREIGN_KEY_CHECKS=1;
实体类#
添加简单的User实体类,用于下面jdbc和mybatis的使用和测试。再添加一个toString方法为了测试时看结果比较简单。
publicclassUser{ privateIntegerid; privateStringusername; privateStringaddress; publicIntegergetId(){returnid;} publicvoidsetId(Integerid){this.id=id;} publicStringgetUsername(){returnusername;} publicvoidsetUsername(Stringusername){this.username=username;} publicStringgetAddress(){returnaddress;} publicvoidsetAddress(Stringaddress){this.address=address;} @Override publicStringtoString(){ return"User{"+ "id="+id+ ",username='"+username+'\''+ ",address='"+address+'\''+ '}'; } }
maven配置#
mysql版本根据自己数据库版本设置
druid为阿里云提供的数据源(可理解为连接池)
com.alibaba druid-spring-boot-starter 1.1.10 mysql mysql-connector-java runtime 8.0.18
数据库配置#
数据库properties配置肯定是少不的啦.
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.username=username spring.datasource.password=password spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mydatabase
整合JDBC#
maven依赖#
添加springboot提供的jdbc依赖
org.springframework.boot spring-boot-starter-data-jdbc
使用#
@Service publicclassUserService{ @Autowired JdbcTemplatejdbcTemplate; publicIntegeraddUser(Useruser){ returnjdbcTemplate.update("insertintouser(username,address)values(?,?);", user.getUsername(),user.getAddress()); } /** *查询方式一 *当类属性和数据库字段不对应时才这样使用 *@return */ publicListgetAllUserFirst(){ returnjdbcTemplate.query("select*fromuser;",newRowMapper (){ @Override publicUsermapRow(ResultSetresultSet,inti)throwsSQLException{ Useruser=newUser(); intid=resultSet.getInt("id"); Stringaddress=resultSet.getString("address"); Stringusername=resultSet.getString("username"); user.setId(id); user.setUsername(username); user.setAddress(address); returnuser; } }); } /** *查询方式二 *当类属性和数据库字段对应时就这样使用啦,比上面的简洁很多 */ publicList getAllUserSecond(){ returnjdbcTemplate.query("select*fromuser;",newBeanPropertyRowMapper<>(User.class)); } }
这里需要记一下,jdbc不论新增,修改,删除都是使用update方法。而查询则是使用query。
如果数据库字段和实体类属性不一致时,则需要使用上面代码中的查询方式一
如果数据库字段和实体类属性全都一致时,则可以使用上面代码中的查询方式二,简单快捷。
测试#
整理完后当然是少补了测试的啦,测试类如下:
@SpringBootTest classJdbcApplicationTests{ @Autowired UserServiceuserService; @Test publicvoidaddUser(){ Useruser=newUser(); user.setUsername("johnson2"); user.setAddress("colablog.cn"); userService.addUser(user); } publicvoidqueryUsers(){ ListallUserFirst=userService.getAllUserFirst(); System.out.println(allUserFirst); } }
整合MyBatis#
当下最流行的持久层框架MyBatis,天天SSM,听到耳朵都起茧子了。整合MyBatis可能是使用到最多的,整合如下:
maven依赖#
版本的话可以查看maven仓库
org.mybatis.spring.boot mybatis-spring-boot-starter 2.1.1
扫描Mapper#
需要提供mapper路径给SpringBoot进行扫描,我的包扫描路径为cn.colablog.mybatis.mapper
方式一:自己添加一个配置项
@Configuration @MapperScan(basePackages="cn.colablog.mybatis.mapper") publicclassMyBatisConfig{ }
方式二:直接在Application上配置
@SpringBootApplication @MapperScan(basePackages="cn.colablog.mybatis.mapper") publicclassMybatisApplication{ publicstaticvoidmain(String[]args){ SpringApplication.run(MybatisApplication.class,args); } }
Mapper映射#
UserMapper接口#
在Mapper包cn.colablog.mybatis.mapper目录下添加UserMapper接口
@Mapper publicinterfaceUserMapper{ ListgetAllUser(); } UserMapper.xml# Copy select*fromuser
存放方式有三种:
方式一(默认)
SpringBoot默认找Mapper.xml是在resources目录下,例如映射User类的路径在java目录下的cn.colablog.mybatis.mapper。
那么UserMapper.xml就需要放在resources目录下的cn.colablog.mybatis.mapper.
注意:如果你使用的是IDEA开发工具,resource下添加目录不能这样添加:
这样添加IDEA只会帮你添加一个名为cn.colablog.mybatis.mapper的目录,所以你需要逐个目录依次添加,存放位置如下:
方式二
在properties文件中进行配置存放路径:
mybatis.mapper-locations=classpath:/mapper/*.xml
存放位置如下:
方式三
在pom.xml中配置resource需要加载java目录下的xml文件:
... src/main/java **/*.xml src/main/resources
这样你可以和UserMapper接口存放在同一个目录下,存放位置如下:
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。