mybatis基于代理dao的CRUD操作
? 創建mybatis的環境在上一篇就不再寫了,資料庫等也在上一篇
1 創建pojo 的user表
public class User implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2 創建userdao介面
?
public interface UserDao {
/**
* 查詢所有操作
*/
List<User> findAll();
/**
* 保存用戶
* @param user
*/
void saveUser(User user);
/**
* 更新用戶
* @param user
*/
void updateUser(User user );
/**
* 洗掉用戶
* @param user
*/
void deleteUser(int user);
/**
* 根據id查找
* @param id
* @return
*/
User findById(int id);
/**
* 根據名字模糊查詢
* @param username
* @return
*/
List<User> findByName(String username);
/**
* 查詢總用戶數
* @return
*/
int findTotal();
}
3 創建SqlMapConfig.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>
<!--配合別名 只能配置pojo內的 -->
<typeAliases>
<!--type指定的物體類全限定類名 alias屬性指定別名 當指定了別名就不再區分大小寫
<typeAlias type="com.jty.pojo.User" alias="user"></typeAlias>
-->
<!-- 用于指定配置別名的包, 當指定后,該包下的物體類都會注冊別名,并且類名就是別名,也不區分大小寫-->
<package name="com.jty.pojo"/><package name=""/>
</typeAliases>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<!-- 配置連接池 -->
<dataSource type="POOLED">
<!-- 配置連接資料庫的四個基本資訊-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisdb"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 用于指定dao介面所在的包 當指定后便不需要再寫mapper resource 或者 class了
<mapper resource="com/jty/dao/UserDao.xml" />
-->
<package name="com.jty.dao"/>
</mappers>
</configuration>
4 創建userdao.xml 用于處理class中的介面
<?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.jty.dao.UserDao">
<!-- 配置查詢所有 resultType 將查詢結果封裝到user物件中-->
<select id="findAll" resultType="User">
select * from user
</select>
<!--保存用戶 -->
<insert id="saveUser" parameterType="User">
insert into user(username,address,sex,birthday) value(#{username},#{address},#{sex},#{birthday});
</insert>
<!--更新用戶 -->
<update id="updateUser" parameterType="User">
update user set username =#{username},address =#{address},sex =#{sex},birthday=#{birthday}where id=#{id}
</update>
<!--洗掉用戶 -->
<delete id="deleteUser" parameterType="User">
delete from user where id = #{id};
</delete>
<!--查詢用戶 -->
<select id="findById" resultType="User" >
select * from user where id = #{id}
</select>
<!--根據名稱模糊查詢用戶 -->
<select id="findByName" parameterType="string" resultType="User" >
select * from user where username like #{name}
</select>
<!--查詢用戶的總記錄條數 -->
<select id="findTotal" resultType="int" >
select count(id) from user
</select>
</mapper>
5 創建測驗類進行測驗
?
public class MybatisTest {
/**
* @param args
*/
private InputStream in;
private SqlSession session;
private UserDao userDao;
@Before
public void init() throws IOException {
//1 讀取組態檔 resources 的包應為import org.apache.ibatis.io.Resources;
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2 創建SqlSessionFactory工廠
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(in);
//3 使用工廠生產SqlSession物件
session = factory.openSession();
//4 使用SqlSession創建Dao介面的代理物件
userDao = session.getMapper(UserDao.class);
}
@After
public void destory() throws IOException {
session.commit();
session.close();
in.close();
}
/**
* 查詢所有
*/
@Test
public void testfindAll() {
//5 使用代理物件執行方法
List<User> users = userDao.findAll();
for (User user : users
) {
System.out.println(user);
}
}
/**
* 插入資料
*/
@Test
public void testSave() {
User user = new User();
user.setUsername("狗子");
user.setAddress("日本");
user.setSex("男");
user.setBirthday(new Date());
//5 執行保存方法
userDao.saveUser(user);
}
/**
* 更新資料
*/
@Test
public void testUpdate() {
User user = new User();
user.setId(43);
user.setUsername("魏無忌");
user.setAddress("美國");
user.setSex("男");
user.setBirthday(new Date());
//5 執行保存方法
userDao.updateUser(user);
}
/**
* 洗掉用戶
*/
@Test
public void testDelete() {
userDao.deleteUser(48);
}
/**
* 根據id查找
*/
@Test
public void testFindById() {
User user = userDao.findById(49);
System.out.println(user);
}
/**
* 模糊查詢
*/
@Test
public void testFindByName() {
List<User> users = userDao.findByName("%孫%");
for (User user:users
) {
System.out.println(user);
}
}
/**
* 查詢記錄總條數
*/
@Test
public void testFindTotal() {
int count = userDao.findTotal();
System.out.println(count);
}
}
例:


轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/238692.html
標籤:其他
