这次主要了解一些Mybatis核心配置标签的使用方法,和使用Mybatis执行CRUD,直接看代码
配置好maven,和数据库
1.创建实体类User
package com.he.pojo; import org.apache.ibatis.type.Alias; //@Alias("user"):注解起别名为user public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } 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; } @Override public String toString() { return "User{" + "id=" + id + ", name=‘" + name + ‘\‘‘ + ", pwd=‘" + pwd + ‘\‘‘ + ‘}‘; } }
2.配置好Mybatis的核心配置文件,mybatis-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!--引入外部配置文件,标签都是有写的顺序的--> <properties resource="db.properties"> <!--两种配置方法,以下配置,跟外部properties配置。同时存在优先执行内部配置--> <property name="username" value="root"/> <property name="pwd" value="qq1648238534.."/> </properties> <!--可以给实体类起别名,这样UserMapper中用的时候,就不用写包名了 两种方式:在实体类比少的时候用第一种,实体类比较多的时候用第二种 第一种别名可以diy(自定义),第二种不可以,如过要改就在实体类上加@Alias注解--> <typeAliases> <!--第一种:将com.he.pojo.User的别名设置为User。--> <typeAlias type="com.he.pojo.User" alias="User"/> <!--第二种:设置使用com.he.pojo包下的实体类,规范规定使用实体类的类名小写开头 <package name="com.he.pojo"/> --> </typeAliases> <!--环境配置,连接的数据库,这里使用的是MySQL,内部可以设置多个environment 使用哪个,default就调成内个的id--> <environments default="mysql"> <!--环境变量--> <environment id="mysql"> <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置--> <transactionManager type="JDBC"/> <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现--> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!--每一个Mapper,XML都需要在Mabatish核心配置文件中注册--> <mappers> <!--推荐方式--> <mapper resource="com/he/dao/UserMapper.xml"/> <!--使用class注意点:接口和mapper配置文件必须同名且,必须在一个包下--> <!--<mapper class="com.he.dao.UserMapper"/>--> <!--注意点:同上--> <!--<package name="com.he.dao"/>--> </mappers> </configuration>
3.引入01写好的Mybatis工具类
package com.he.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.InputStream; public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static { try { //使用mybatis第一步:获取sqlSession对象 String resource="mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); }catch (Exception e){ e.printStackTrace(); } } //既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。 //SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
4.编写dao/mapper层
UserMapper接口
package com.he.dao; import com.he.pojo.User; import java.util.List; import java.util.Map; public interface UserMapper { //查询全部用户 List<User> getUserList(); //根据ID查询用户 User getUserById(int id); //添加用户 int addUser(User user); //修改用户 int updateUser(User user); //删除用户 int deleteUser(int id); }
UserMapper.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"> <!--namespace=绑定一个对应的Dao/Mapper接口--> <mapper namespace="com.he.dao.UserMapper"> <!--调用接口中获取查询结果得方法。返回结果集,相当于JDBC里的resultSet--> <select id="getUserList" resultType="User"> <!--select查询语句--> select * from mybatis.user </select> <select id="getUserById" resultType="com.he.pojo.User" parameterType="int"> select * from mybatis.user where id= #{id}; </select> <insert id="addUser" parameterType="com.he.pojo.User"> insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd}); </insert> <update id="updateUser" parameterType="com.he.pojo.User"> update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id} ; </update> <delete id="deleteUser" parameterType="int"> delete from mybatis.user where id=#{id}; </delete> </mapper>
5.测试
package com.he.dao; import com.he.pojo.User; import com.he.utils.MybatisUtils; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import java.util.HashMap; import java.util.List; import java.util.Map; public class UserMapperTest { @Test public void getUserLike(){ SqlSession sqlSession = MybatisUtils.getSqlSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List<User> userList = mapper.getUserList(); for (User user : userList) { System.out.println(user); } sqlSession.close(); } }
结构属下图所示
原文:https://www.cnblogs.com/q1748819552/p/12538786.html