日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatis count返回null_Mybatis属性示例-Properties的三种配置方式

發(fā)布時間:2024/1/23 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatis count返回null_Mybatis属性示例-Properties的三种配置方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.項目結(jié)構(gòu)

開發(fā)工具:IDEA+Maven

項目結(jié)構(gòu)

2.配置

2.1.Maven配置

Maven配置文件pom.xml,增加Mysql8數(shù)據(jù)庫連接類庫、Mybatis類庫、Log4j2類庫、Base64加解密依賴類庫

<?xml version="1.0" encoding="UTF-8"?> mybatis-configuration-properties org.poiuy1.0-SNAPSHOT4.0.0 mybatis-configuration-properties-code mysql mysql-connector-java 8.0.22org.mybatis mybatis 3.5.5org.apache.logging.log4j log4j-core 2.12.1org.apache.logging.log4j log4j-api 2.12.1commons-codec commons-codec 1.13

2.2.Mybatis配置文件

Mybatis配置文件mybatis_config.xml,此處主要配置properties、dataSource以及Mapper文件

<?xml version="1.0" encoding="UTF-8"?>

2.3..數(shù)據(jù)庫配置

配置文件db.properties,要注意key值與Mybatis配置文件中保持相同

db.driver = com.mysql.cj.jdbc.Driverdb.url = jdbc:mysql://192.168.245.128:9906/poiuy_studydb.username = rootdb.password = xxx

3.DAO層開發(fā)

Mapper接口,添加簡單的增刪改查功能

package org.poiuy.mybatis.configuration.properties.code.dao;import org.apache.ibatis.annotations.Param;import org.poiuy.mybatis.configuration.properties.code.domain.MybatisUser;/** * @author Poiuy * @Description */public interface MybatisUserMapper { public int insert(MybatisUser user); public int update(MybatisUser user); public int delete(@Param("id") int id); public MybatisUser selectByName(@Param("username") String username);}

對應(yīng)的xml配置文件

<?xml version="1.0" encoding="UTF-8"?> INSERT INTO mybatis_user (username,secure,age,brith,email) VALUE (#{username},#{secure},#{age},#{brith},#{email}); DELETE FROM mybatis_user WHERE id = #{id}; SELECT * FROM mybatis_user WHERE username = #{username} UPDATE mybatis_user SET username = #{username} , secure = #{secure} , age = #{age} , brith = #{brith} , email = #{email} WHERE id = #{id}

4.Domain類

MybatisUser對應(yīng)的數(shù)據(jù)庫中的表

package org.poiuy.mybatis.configuration.properties.code.domain;import java.time.LocalDate;/** * @author Poiuy * @Description * CREATE TABLE `mybatis_user` ( * `id` int NOT NULL AUTO_INCREMENT, * `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * `secure` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * `age` int NOT NULL, * `brith` date NOT NULL, * `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, * PRIMARY KEY (`id`) * ) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 */public class MybatisUser { private int id; private String username; private String secure; private int age; private LocalDate brith; private String email;... 省略get set方法 ...}

5.啟動類

讀取配置文件通過mybatis對數(shù)據(jù)庫進行操作

package org.poiuy.mybatis.configuration.properties.value;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 org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.poiuy.mybatis.configuration.properties.value.dao.MybatisUserMapper;import org.poiuy.mybatis.configuration.properties.value.domain.MybatisUser;import java.io.IOException;import java.time.LocalDate;/** * @author Poiuy * @Description */public class Application { private static final Logger logger = LogManager.getLogger(Application.class); public static void main(String[] args) { try { SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis/mybatis_config.xml")); SqlSession session = factory.openSession(); MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); MybatisUser user = new MybatisUser(); user.setUsername("xxx"); user.setSecure("xxx"); user.setAge(x); user.setEmail("1100@qq.com"); user.setBrith(LocalDate.of(1991,03,22)); int count = mybatisUserMapper.insert(user); logger.trace("插入數(shù)量:" + count); user.setEmail("1100@163.com"); count = mybatisUserMapper.update(user); logger.trace("更新數(shù)量:" + count); MybatisUser poi = mybatisUserMapper.selectByName("xxx"); logger.trace(poi.getUsername() + " -- " + poi.getEmail()); count = mybatisUserMapper.delete(poi.getId()); logger.trace("刪除數(shù)量:" + count); } catch (IOException e) { e.printStackTrace(); } }}

6.加密方式配置

6.1.增加加密解密類

如果需要對配置文件中的數(shù)據(jù)庫連接進行加密,則可以通過以下方式

添加Base64輔助類,包含加密解密方法

package org.poiuy.mybatis.configuration.properties.code.util.secure;import org.apache.commons.codec.binary.Base64;import java.io.UnsupportedEncodingException;public class Base64Util {/** * 加密 */public static String getBase64(String str) {byte[] b = null; String s = null; try { b = str.getBytes("utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } if (b != null) { s = new Base64().encodeAsString(b);} return s; } /** * 解密 */public static String getFromBase64(String s) { byte[] b = null; String result = null; if (s != null) { try {b = new Base64().decodeBase64(s);result = new String(b, "utf-8"); } catch (Exception e) { e.printStackTrace(); } } return result; } public static void main(String[] args) {System.out.println(Base64Util.getBase64("root"));System.out.println(Base64Util.getFromBase64("bGxpYW4yMDc="));}}

6.2.數(shù)據(jù)庫配置中使用加密后的字符串

然后通過Base64Util輔助類將數(shù)據(jù)庫賬號密碼進行加密,然后填寫到數(shù)據(jù)庫配置文件中

db.driver = com.mysql.cj.jdbc.Driverdb.url = jdbc:mysql://192.168.245.128:9906/poiuy_studydb.username = cm9vdA==db.password = bGxpYW4yMDc=

6.3.使用Properties參數(shù)傳遞的方式獲得SqlSession

最后讀取配置文件時對賬號密碼進行解密后生成SqlSessionFactory

package org.poiuy.mybatis.configuration.properties.code.util.mybatis;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.poiuy.mybatis.configuration.properties.code.util.secure.Base64Util;import java.io.IOException;import java.io.InputStreamReader;import java.util.Properties;/** * 對配置進行解密 * 三種配置的優(yōu)先級: * 1.在properties元素體內(nèi)指定的屬性首先被加載 * 2.根據(jù)properties元素中的resource屬性讀取類路徑下的屬性文件,并覆蓋已讀取的同名屬性 * 3.讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性 */public class MybatisPropertiesUtil {private static SqlSessionFactory factory = null;/** * 使用XML文件創(chuàng)建SqlSessionFactory * @Description: TODO */public static SqlSessionFactory getFactory() throws IOException {if(factory == null) {String source = "mybatis/mybatis_config.xml";String db = "db/db.properties";InputStreamReader sourceReader = new InputStreamReader(Resources.getResourceAsStream(source));InputStreamReader dbReader = new InputStreamReader(Resources.getResourceAsStream(db));Properties prop = new Properties();prop.load(dbReader);prop.setProperty("db.username", Base64Util.getFromBase64(prop.getProperty("db.username")));prop.setProperty("db.password", Base64Util.getFromBase64(prop.getProperty("db.password")));//使用程序參數(shù)傳遞factory = new SqlSessionFactoryBuilder().build(sourceReader,prop);return factory;}return factory;}}

啟動類中使用MybatisPropertiesUtil獲得SqlSession,在繼續(xù)后續(xù)的邏輯

public class Application { public static void main(String[] args) { try { // SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("mybatis/mybatis_config.xml")); // SqlSession session = factory.openSession(); // MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); SqlSession session = MybatisPropertiesUtil.getFactory().openSession(); MybatisUserMapper mybatisUserMapper = session.getMapper(MybatisUserMapper.class); ... } catch (IOException e) { e.printStackTrace(); } }}

總結(jié)

以上是生活随笔為你收集整理的mybatis count返回null_Mybatis属性示例-Properties的三种配置方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。