网站建设前期费用,昆明建企业网站多少钱,推广公众号有哪些方法,asp.net使用wordpress一、什么是Mybatis
1#xff09;MyBatis 是一款优秀的持久层#xff08;DAO层#xff09;框架
2#xff09;MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程
3#xff09;MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息#xff0c;将…一、什么是Mybatis
1MyBatis 是一款优秀的持久层DAO层框架
2MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程
3MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录
二、Mybatis基础程序
1、pom.xml文件 在maven中引入mybatis和mysql的依赖
dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.2/version
/dependency
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.47/version
/dependency2、创建一个数据库表lsz_user
CREATE TABLE lsz_user (id int,name varchar(20),pwd varchar(20)
);
insert into lsz_user values (1,凯影,123),(2,螳螂,456);3、mybatis-config.xml mybatis的核心配置文件在springboot项目中整合mybatis后这个文件会被省略不写
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd!--configuration中内容顺序必须为(properties,settings,typeAliases,plugins,environments,,mappers)--
configuration!--动态配置数据库属性--properties resourcedb.properties/!--这里可以设置一些配置如日志懒加载缓存等--settings!--开启日志--setting namelogImpl valueSTDOUT_LOGGING//settings!--起别名--typeAliasestypeAlias typecom.demo.pojo.User aliasuser//typeAliases!--指定使用哪个数据库--environments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver value${driver}/property nameurl value${url}/property nameusername value${username}/property namepassword value${password}//dataSource/environment/environments!--每个xml文件都要到这里注册--mappersmapper resourcecom/demo/dao/UserMapper.xml//mappers/configuration3、外部文件配置数据库db.properties 这里mydatabse是自己的数据库名字
drivercom.mysql.jdbc.Driver
urljdbc:mysql://localhost:3306/mydatabase?useSSLfalseuseUnicodetruecharacterEncodingutf8
usernameroot
password1234564、编写MyBatisUtils工具类
package com.demo.utils;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;
import java.io.InputStream;//工具类为了获得sqlSession对象
public class MybatisUtils {private static SqlSessionFactory sqlSessionFactory;static{try {String resource mybatis-config.xml;InputStream inputStream Resources.getResourceAsStream(resource);sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);}catch (IOException e){e.printStackTrace();}}//获得sqlSession对象public static SqlSession getSqlSession(){//参数为true是自动提交事务SqlSession sqlSessionsqlSessionFactory.openSession(true);return sqlSession;}
}
在springboot项目中也会因为整合而省略
5、编写实体类User
package com.demo.pojo;public class User {private int id; //idprivate String name; //姓名private String pwd; //密码public User(int id, String name, String pwd) {this.id id;this.name name;this.pwd pwd;}public User() {}public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String name) {this.name name;}public String getPwd() {return pwd;}public void setPwd(String pwd) {this.pwd pwd;}Overridepublic String toString() {return User{ id id , name name \ , pwd pwd \ };}
}
6、编写接口UserMapper
package com.demo.dao;import com.demo.pojo.User;
import java.util.List;public interface UserMapper {ListUser selectUser();
}7、编写对应的xml配置文件UserMapper.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.demo.dao.UserMapperselect idselectUser resultTypecom.demo.pojo.Userselect * from lsz_user/select
/mapper8、编写测试
import com.demo.dao.UserMapper;
import com.demo.pojo.User;
import org.apache.ibatis.session.SqlSession;
import com.demo.utils.MybatisUtils;import java.util.List;public class test {public static void main(String[] args) {SqlSession session MybatisUtils.getSqlSession();UserMapper mapper session.getMapper(UserMapper.class);ListUser users mapper.selectUser();for (User user: users){System.out.println(user);}session.close();}
}注Maven静态资源过滤问题 以后所有项目下的pom.xml都加上以下代码不然会报错如找不到com/demo/dao/UserMapper.xml“即使我们在mapper中配置了
buildresourcesresourcedirectorysrc/main/java/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resourceresourcedirectorysrc/main/resources/directoryincludesinclude**/*.properties/includeinclude**/*.xml/include/includesfilteringfalse/filtering/resource/resources
/build目录结构如下
三、常用CRUD操作
1、根据id查询用户一个参数 在UserMapper中添加对应方法
User selectUserById(int id);在UserMapper.xml添加select语句 select idselectUserById resultTypecom.demo.pojo.Userselect * from lsz_user where id #{id}/select2、根据密码和名字查询用户多个参数 方法一增加 Param属性 Sql语句编写时不需要设置参数类型parameterType 在UserMapper中添加对应方法 User selectUserByNP(Param(username) String username, Param(pwd) String pwd);在UserMapper.xml添加select语句 select idselectUserByNP resultTypecom.demo.pojo.Userselect * from lsz_user where name #{username} and pwd #{pwd}/select方法二使用万能的Map 编写sql语句时需要传递参数类型参数类型为map 在UserMapper中添加对应方法 User selectUserByNP2(MapString,Object map);在UserMapper.xml添加select语句
select idselectUserByNP2 parameterTypemap resultTypecom.demo.pojo.User
select * from lsz_user where name #{username} and pwd #{pwd}
/select在测试的时候需要传递一个map如下 MapString, Object map new HashMapString, Object();map.put(username,张三);map.put(pwd,123);User user mapper.selectUserByNP2(map);总结参数过多使用Map实现参数比较少直接传递参数
3、添加一个用户 在UserMapper中添加对应方法 int addUser(User user);在UserMapper.xml添加insert语句 insert idaddUser parameterTypecom.demo.pojo.Userinsert into lsz_user (id,name,pwd) values (#{id},#{name},#{pwd})/insert4、修改用户的信息
在UserMapper中添加对应方法 int updateUser(User user);在UserMapper.xml添加update语句 update idupdateUser parameterTypecom.demo.pojo.Userupdate lsz_user set name#{name},pwd#{pwd} where id #{id}/update5、根据id删除一个用户
在UserMapper中添加对应方法
int deleteUser(int id);在UserMapper.xml添加delete语句 delete iddeleteUser parameterTypeintdelete from lsz_user where id #{id}/delete6、模糊查询 在UserMapper中添加对应方法 ListUser selectlike(String value);在UserMapper.xml添加select语句 select idselectlike resultTypecom.demo.pojo.Userselect * from lsz_user where name like #{value}/select测试 mapper.selectlike(%张%);小结 所有的增删改操作都需要提交事务即session.commit();但是我们在编写MybatisUtils工具类时设置了自动提交事务就不用再写commit了 接口所有的普通参数尽量都写上Param参数尤其是多个参数时必须写上 有时候根据业务的需求可以考虑使用map传递参数 为了规范操作在SQL的配置文件中我们尽量将Parameter参数和resultType都写上